Javascript $.ajax()调用,仅在更新时调用

Javascript $.ajax()调用,仅在更新时调用,javascript,jquery,ajax,http,caching,Javascript,Jquery,Ajax,Http,Caching,我正在使用$.ajax()请求读取xml 我只想在更新资源ErrorMessages.xml时打电话。否则使用浏览器缓存。创建一个名为“updateTimeStamp”的全局变量,并将updateTimeStamp放入xml中。然后在执行ajax请求时找到时间戳,并将其与保存的ipdateTimeStamp进行比较。如果更大,则执行您需要执行的操作,如果不执行任何操作,浏览器将不知道服务器上是否已更新了ErrorMessages.xml。它必须发出检查文件是否已修改的请求 您可能希望在jQuer

我正在使用$.ajax()请求读取xml


我只想在更新资源ErrorMessages.xml时打电话。否则使用浏览器缓存。

创建一个名为“updateTimeStamp”的全局变量,并将updateTimeStamp放入xml中。然后在执行ajax请求时找到时间戳,并将其与保存的ipdateTimeStamp进行比较。如果更大,则执行您需要执行的操作,如果不执行任何操作,浏览器将不知道服务器上是否已更新了
ErrorMessages.xml
。它必须发出检查文件是否已修改的请求

您可能希望在jQuery
$.ajax()
请求中将
ifModified
选项设置为
true
,因为默认情况下该选项设置为
false

$.ajax({
  type: "GET",
  ifModified: true,
  async: false,
  url: "../../../ErrorMessages.xml",
  dataType: "xml",
  success: function (xml) {
     // ..
  }
});
引述:

ifModified(布尔) 默认值:false

仅当自上次请求后响应已更改时,才允许请求成功。这是通过检查上次修改的标题来完成的。默认值为false,忽略标题。在jQuery1.4中,此技术还检查服务器指定的“etag”,以捕获未修改的数据

只要web服务器支持标头,那么对XML的第一个请求将如下所示:

GET /ErrorMessages.xml HTTP/1.1
Host: www.example.com

HTTP/1.1 200 OK
Last-Modified: Wed, 06 Oct 2010 08:20:58 GMT
Content-Length: 1234
GET /ErrorMessages.xml HTTP/1.1
Host: www.example.com
If-Modified-Since: Wed, 06 Oct 2010 08:20:58 GMT

HTTP/1.1 304 Not Modified
但是,对同一资源的后续请求如下所示:

GET /ErrorMessages.xml HTTP/1.1
Host: www.example.com

HTTP/1.1 200 OK
Last-Modified: Wed, 06 Oct 2010 08:20:58 GMT
Content-Length: 1234
GET /ErrorMessages.xml HTTP/1.1
Host: www.example.com
If-Modified-Since: Wed, 06 Oct 2010 08:20:58 GMT

HTTP/1.1 304 Not Modified
如果web服务器发现文件自
头日期起已被修改,如果自
头日期起被修改,它将正常提供文件。

查看此处:

Etag支持是在JQ1.4中启用的,因此您可以使用它