jQuery .getJSON vs .post哪一个更快?

时间:2011-08-23 11:46:28

标签: javascript jquery performance

使用

$.getJSON();

 $.post();

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

我想知道哪一个更快?

假设HTML文件只是简单的布尔文本(true或false)

7 个答案:

答案 0 :(得分:6)

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

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

因此,问题可以转换为哪一个更快的HTTP GET请求或POST请求?

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

但这只是速度,我认为最好遵循REST指南。如果要修改某些内容,请使用POST,如果要获取内容,请使用GET。

另一个重要的事情是,GET响应可以缓存,但我有problems caching POST个。

答案 1 :(得分:3)

我不认为使用ajax.post使用http post请求加载数据会有所不同,getJSON使用http get getJSON请求更多,不必明确告诉dataType {{1}}

答案 2 :(得分:3)

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

发布并使用HTTP,因此性能差异可以忽略不计,特别是考虑到WAN通信的变量。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

这已经过时了......

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

如果你这样做:

$.ajax({
    type: "POST", 
    dataType: "json",
    url: url, 
    data: {
    token : 'pass-some-security-token-here'
    },
    cache: false,
    success: function(data) {
    //do your stuff here
    }
});

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

if (isset($_POST['token'])) { //you can also test token further
    //do your stuff her and send back result
} else {
    //error: sorry, invalid, or no security token
}

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

答案 5 :(得分:1)

$.getJSON();是$.ajax();的快捷方式,它也会调用$.post();,因此您不会看到太多差异(但直接使用$.getJSON()会更容易)。

请参阅jquery doc

[编辑] NimChimpsky比我快......

答案 6 :(得分:0)

没有区别,因为两者都使用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/