为什么jquery GET不应该缓存结果呢?

时间:2012-04-11 16:43:35

标签: jquery ajax caching click

我通过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的新手。

1 个答案:

答案 0 :(得分:2)

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

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