【问题标题】:jQuery .getJSON vs .post which one is faster?jQuery .getJSON 与 .post 哪个更快?
【发布时间】:2026-02-09 22:40:01
【问题描述】:

使用

$.getJSON();

 $.post();

我正在尝试通过仅用于 AJAX 请求的页面发送一些参数 并在 JSON 或 html sn-p 中获得一些结果。

我想知道哪个更快?

假设 HTML 文件是简单的布尔文本(真或假)

【问题讨论】:

    标签: javascript jquery performance


    【解决方案1】:

    正如其他人所说,这两个功能之间没有真正的区别,因为它们都将由XMLHttpRequest发送。

    如果服务器使用相同的代码处理两个请求,则处理时间应该相同。

    所以问题可以翻译成HTTP GET请求和POST请求哪个更快?

    因为与 GET 请求相比,POST 请求需要两个额外的 HTTP 标头(Content-TypeContent-Length),所以后者应该更快(因为传输的数据更少)。

    但这只是速度,我认为最好遵循这里的REST 准则。如果您正在修改某些内容,请使用 POST,如果您想获取某些内容,请使用 GET。

    还有一件重要的事情,GET 响应可以被缓存,但我有 problems caching POST 的。

    【讨论】:

      【解决方案2】:

      我认为使用ajax.post 使用http post 请求加载数据,而getJSON 使用http get 请求更多,你不必明确告诉@ 987654326@dataType

      【讨论】:

        【解决方案3】:

        如果它是从服务器检索数据而不持久化(更新)任何内容的 HTTP 操作,则使用 GET 是正确的语义。

        post 和 get 都使用 HTTP,因此性能差异可以忽略不计,尤其是考虑到 WAN 通信的变量。

        【讨论】:

          【解决方案4】:

          它们都是jQuery.ajax 的包装器/速记方法,因此不会有性能差异。

          【讨论】:

            【解决方案5】:

            这是旧的但是...

            我们都必须记住:CSRF/XSRF。

            如果你这样做:

            $.ajax({ 类型:“发布”, 数据类型:“json”, 网址:网址, 数据: { 令牌:'在这里传递一些安全令牌' }, 缓存:假, 成功:函数(数据){ //在这里做你的事情 } });

            你可以像这样接收它,使大多数 CSRF/XSRF 无效

            if (isset($_POST['token'])) { //你也可以进一步测试token //做你的事情并发回结果 } 别的 { //错误:抱歉,无效或没有安全令牌 }

            在许多情况下,GET 是对坏人的邀请,因为 getJSON 使用 GET HTTP 请求。

            【讨论】:

              【解决方案6】:

              $.getJSON();是$.ajax(); 的快捷方式,它也调用$.post();,所以你不会看到太大的区别(但直接使用$.getJSON() 会更容易)。

              jquery doc

              [编辑] NimChimpsky 比我快...

              【讨论】:

                【解决方案7】:

                没有区别,因为两者都使用XMLHttpRequest

                首先$.getJSON()是一个简写的Ajax函数,相当于:

                $.ajax({
                  dataType: "json",
                  url: url,
                  data: data,
                  success: success
                });
                

                https://api.jquery.com/jQuery.getJSON/

                第二,$.post()也是Ajax的简写函数,相当于:

                $.ajax({
                  type: "POST",
                  url: url,
                  data: data,
                  success: success,
                  dataType: dataType
                });
                

                https://api.jquery.com/jquery.post/

                【讨论】: