我有一个应用程序(一个小部件),我在 5 分钟计时器上使用 $.getScript(),每五分钟加载一个文件。然后,我获取刚刚下载的文件的内容,并重建我的页面,以便我的小部件可以更新。然而,大多数时候,文件没有改变,当我的计时器执行 $.getScript() 时,Firebug 每 5 分钟显示一个 304 Not Modified header 。
我想感知文件何时未被修改,这样我就不会耗尽用户资源,无缘无故地重建页面。
使用$.getScript()是否可以获取html headers?
最佳答案
而不是 getScript (),使用ajax () - 更强大并减少函数调用。
请注意,get()、post() 和 getScript() 只允许您将函数绑定(bind)到成功。在我看来,使用 ajax由于我提到的原因,使用函数而不是所有快捷方式是一个很好的做法。
您需要完整的事件,因为它为您提供 xmlHttpRequest (XHR) 对象。
为了达到getScript一样的效果(),您必须将 dataType: 'script'
添加到 ajax 选项。
现在,您可以使用complete事件来检查XHR代码,如果没有修改则返回。
例如:
$.ajax({
url: 'your-url',
dataType: 'script',
complete: function(xhr) {
if (xhr.status == 304) return;
// or better: if (xhr.status != 200) return;
// your code goes here
}
});
你无法提前知道资源没有被修改(如果你在客户端没有一些逻辑)。
您必须询问服务器,服务器会尽早检查并发送 304 代码(因此速度更快并减少服务器的负载)。
关于javascript - 使用 jQuery 的 $.getScript(),我可以检测到 304 Not Modified headers 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2403729/