我正在使用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网址?
答案 0 :(得分:0)
我不确定在这种情况下导致缓存的原因。
但是,在处理ajax请求时,一种阻止缓存的常用方法是向URL添加random或timestamp参数。例如请求/ public / static_file?_ = 1239871984而不是/ public / static_file
另一种防止它的方法可能是添加过期标头,这对某些浏览器来说效果不好(如果我没记错的话,IE8真的具有侵略性的ajax缓存)。
同样的方法也适用于在站点更新时强制刷新js / css文件。