jquery - 为什么 jquery GET 没有缓存应有的结果?

标签 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

显示内容没有被缓存。它显示 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/

相关文章:

javascript - 不要淡入,直到淡出完全完成

jquery - &lt;script&gt; 标签在 Joomla 1.6 中被 super 管理员保存时不断被删除

jquery - AJAX、连接表和复杂查询

jquery - Nivo Slider - 仅显示静态图像

jquery - 拦截jquery中变量内的粘贴事件

java - weblogic 上的 java 自定义缓存重新加载

java - 有没有办法配置 ehcache 在无法获取更新版本时返回过期对象?

python selenium清除缓存和cookie

javascript - 在对每个条目执行请求时迭代数组

javascript - "Content-disposition"- 类似 Javascript 的行为