我正在通过 ajax 函数获取我的网站子页面。一切都运转良好。但是当我在控制台中检查请求时,我收到以下报告
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection close
Content-Length 6663
Content-Type text/html
Date Wed, 11 Apr 2012 16:29:51 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Pragma no-cache
Server LiteSpeed
Vary Accept-Encoding, User-Agent
X-Powered-By PHP/5.3.10
显示内容没有被缓存。它显示 header 在过去的日期到期。但是在ajax()上的jquery页面中我读到默认情况下所有 ajax 调用都会被缓存。问题是什么?这是我的代码
<script type="text/javascript">
$("#subpage1").click(function() {
$("#wrapper").empty();
$("#wrapper").html('loading');
$.ajax({
url: 'subpage/1.html',
success: function(data) {
$("#wrapper").html(data);
}
});
});
</script>
我是 jquery 和 ajax 新手。
最佳答案
您只是错误地解释了控制台的输出:这是来自服务器的响应 header ,它明确告诉客户端不要将该响应存储在缓存中。
如果您希望对其进行缓存,则需要在事务的服务器端进行更改,而不是在客户端。这主要通过发送正确的 header 来完成:提供 future 的到期日期或根本不提供到期日期。并删除那些“缓存” header 。然后,客户端将发送最后一个缓存请求的日期及其下一个请求(在 If-Modified-Since header 中),您只需要确保您的脚本检查自该日期时间以来是否确实进行了修改 - 如果是的话,照常返回内容,否则只响应http状态码 304 未修改。谷歌一下与缓存控制相关的http headers,这个有点棘手。
关于jquery - 为什么 jquery GET 没有缓存应有的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110296/