jQuery .getJSON vs .post哪一个更快?
运用
$.getJSON();
要么
$.post();
我正在尝试通过一个仅用于AJAX请求的页面发送一些参数,并在JSON或html片段中获得一些结果。
我想知道的是哪一个更快?
假设HTML文件只是简单的布尔文本(true或false)
正如其他人所说,这两个函数之间没有真正的区别,因为它们都将由XMLHttpRequest
发送。
如果服务器使用相同的代码处理两个请求,则处理时间应该相同。
因此,问题可以转换为哪一个更快的HTTP GET请求或POST请求?
因为POST请求需要两个额外的HTTP头( Content-Type
和Content-Length
),与GET请求相比,后者应该更快(因为传输的数据更少)。
但这只是速度,我认为最好遵循这里的REST指南。 如果要修改某些内容,请使用POST,如果要获取内容,请使用GET。
另外一个重要的事情是,GET响应可以被缓存,但是我在缓存POST时遇到了问题 。
我不认为它会有所作为使用ajax
, .post
使用http post
请求加载数据,其中getJSON
使用http get
请求更多你不必明确告诉getJSON
dataType
如果它是从服务器检索数据而不持久(更新)任何内容的HTTP操作,则GET是要使用的正确语义。
发布和使用HTTP都会使性能差异可以忽略不计,特别是考虑到WAN通信的变量。
它们都是jQuery.ajax的包装器/速记方法,因此不会有性能差异。
这是旧的,但……
我们都必须记住:CSRF / XSRF。
如果你这样做:
$就({ 类型:“POST”, dataType:“json”, url:url 数据:{ 令牌:'pass-some-security-token-here' }, cache:false, 成功:函数(数据){ //在这里做你的东西 } });
你可以像这样收到它,使大多数CSRF / XSRF无效
if(isset($ _ POST ['token'])){//您还可以进一步测试令牌 //做你的东西并发回结果 } else { //错误:抱歉,无效或没有安全令牌 }
在许多情况下,GET是对坏人的邀请,因为getJSON使用GET HTTP请求。
$.getJSON()
; 是$.ajax();
的快捷方式$.ajax();
它也调用$.post();
所以你不会看到太大的区别(但直接使用$.getJSON()
会更容易)。
请参阅jquery doc
[编辑] NimChimpsky比我快……