2

我正在通过 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

它表明内容没有被缓存。它显示过去日期的标头到期。但是在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 的新手。

4

1 回答 1

2

您只是错误地解释了控制台的输出:这是来自服务器的响应标头,它明确告诉客户端不要将该响应存储在缓存中。

如果您希望它被缓存,您需要在事务的服务器端进行更改,而不是在客户端进行更改。这将主要通过发送正确的标头来完成:提供未来的到期日期或根本不提供。并删除那些“缓存”标头。然后,客户端将发送最后一个缓存请求的日期及其下一个请求(在 If-Modified-Since 标头中),您只需要确保您的脚本检查自该日期时间以来是否确实有修改 - 如果是, 像往常一样返回内容,否则只响应 http 状态码 304 Not modified。Google 关于缓存控制相关的http headers,这个有点棘手。

于 2012-04-11T16:48:22.323 回答