javascript - 使用 jQuery 的 $.getScript(),我可以检测到 304 Not Modified headers 吗?

标签 javascript jquery header

我有一个应用程序(一个小部件),我在 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/

相关文章:

c++ - 头文件中的类

javascript - 当字符串与所需文本匹配时向元素添加 CSS 类 - JavaScript

javascript - 检测浏览器对 css 属性的支持

javascript - 事件中的 someFunction() 和 someFunction 有什么区别?

jQueryMobile : Dropdown menus in Header

javascript - 如何使用 Jquery 和 JavaScript 读取属性文件

javascript - jQuery/HTML5 Facebook 时间轴像粘性标题

javascript - $.ajax 结合 $.ajaxSetup 默认设置

javascript - 了解 javascript 提升和执行上下文

php - 正确的 pdf 文件下载的 PHP header