jQuery UI ajax选项卡和粒度缓存控件的内容

时间:2011-12-04 17:57:07

标签: ajax jquery-ui caching

我正在使用jQuery UI选项卡,其中ajax内容注入到DIV中,而不是IFRAME中。

内容作为包含HTML标记的文本文件存储在服务器上,但该文件缺少DOCTYPE声明,HEAD部分,BODY部分'它基本上

  <DIV>lorem ipse</DIV>.

我尝试了这种方法来强制禁止缓存:

 $("#tabs").tabs(
    {
    cache: false,
    ajaxOptions: {cache: false}
    }
);

但是,当我看到Fiddler的缓存标签时,它说:

HTTP / 200响应默认是可缓存的,除非Expires,Pragma,    或Cache-Control标头存在并禁止缓存。    HTTP / 1.1 ETAG标题存在:“53a38d5790b2cc1:ab2”    HTTP Last-Modified Header存在:Sun,04 Dec 2011 14:23:50 GMT

未提供显式HTTP过期信息。    大多数浏览器都使用启发式过期策略:    Last-Modified和Date之间的差值的10%是'00:20:13'    所以这个回应会启发式地在12/4/2011 1:08:26 PM过期。

如何将此特定内容保留为无缓存?

P.S。为了回应@Mikael的观点,为URL添加某种变化值以防止缓存是很常见的,我不太确定在使用jQuery ajax声明方法时如何做到这一点:

<div id='tabs' class="ui-tabs">

   <ul>
       <li><a title="contentcontainer" href="foo.html">One</a></li>
   <li><a title="contentcontainer" href="foo2.html">Two</a></li>        
   <li><a title="contentcontainer" href="foo3.html">Three</a></li>
   </ul>
   <div id='contentcontainer'></div>
 </div>

如何将'?' + new Date().getTime().toString()附加到href网址?

1 个答案:

答案 0 :(得分:0)

我不确定在这种情况下导致缓存的原因。

但是,在处理ajax请求时,一种阻止缓存的常用方法是向URL添加random或timestamp参数。例如请求/ public / static_file?_ = 1239871984而不是/ public / static_file

另一种防止它的方法可能是添加过期标头,这对某些浏览器来说效果不好(如果我没记错的话,IE8真的具有侵略性的ajax缓存)。

同样的方法也适用于在站点更新时强制刷新js / css文件。