我正在使用$ .ajax()请求读取xml。
$.ajax({
type: "GET",
async: false,
url: "../../../ErrorMessages.xml",
dataType: "xml",
success: function (xml) {
$(xml).find("*[Name='" + Field + "']").each(function () {
message = $(this).find(Rule).text();
});
}
});
我想仅在更新资源 ErrorMessages.xml 时才进行调用。否则使用浏览器缓存。
答案 0 :(得分:3)
浏览器不知道服务器上是否已更新ErrorMessages.xml
。它必须发出检查文件是否已被修改的请求。
您可能希望在jQuery ifModified
请求中将true
选项设置为$.ajax()
,因为默认设置为false
:
$.ajax({
type: "GET",
ifModified: true,
async: false,
url: "../../../ErrorMessages.xml",
dataType: "xml",
success: function (xml) {
// ..
}
});
引用jQuery.ajax() documentation:
ifModified(布尔)
默认值:false
仅在自上次请求后响应发生更改时才允许请求成功。这是通过检查Last-Modified标头来完成的。默认值为false,忽略标头。在jQuery 1.4中,这种技术还检查服务器指定的'etag'以捕获未修改的数据。
只要您的Web服务器支持Last-Modified
标头,那么对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
如果Web服务器发现自If-Modified-Since
标题日期以来文件已被修改,它将正常提供文件。
答案 1 :(得分:0)
创建一个名为“updateTimeStamp”的全局变量,并将updatetimestamp放入xml中。然后在执行ajax请求时找到时间戳并将其与保存的ipdateTimeStamp进行比较。如果它更大那么做你需要做的事情,如果不做什么
答案 2 :(得分:0)
看这里:http://jquery14.com/day-01/jquery-14
在jQ 1.4中启用了Etag支持,因此您可以使用它。