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