jQuery ajax缓存:false仅适用于firefox

时间:2010-07-22 06:40:28

标签: ruby-on-rails caching jquery cross-browser

我开发了一个简单的叠加层来预览完整尺寸的图像。

我使用“cache:false”来阻止缓存。

代码很简单:

$.ajax({
   url: urlFull,
   cache: false,
   success: function(html){
      // display image
   },
   error: function(XMLHttpRequest, textStatus, errorThrown ) {
      // display error
   }
});

问题是 - 当图像文件被另一个替换时,无论设置了“cache:false”选项,浏览器都将始终显示旧文件。

此问题出现在Safari 5.0(6533.16)和Chrome 5.0.375.99。

在Firefox 3.6.3中,它按预期工作(无缓存)

我无法控制服务器端逻辑,因为我预加载了常规文件,而没有在rails中调用控制器操作。

这个问题有解决方法吗?也许,我可以拦截Rails服务器的响应并调整一些标题? ...我在localhost下开发。

感谢。

2 个答案:

答案 0 :(得分:1)

作为“脏”解决方案,请尝试在URL GET参数中添加时间戳。

答案 1 :(得分:0)

我尝试过使用

data: { timestamp: new Date().getTime() }.

它不起作用。

在我发现的Safari的开发人员面板中,请求字符串如下所示:

  

http://path_to_the_image.png?_=1279789134612”。

我添加了“_”参数:

data: {_: new Date().getTime()}

并获得以下网址:

  

http://path_to_the_image.png?=1279789134612&=1279789245466”。

另外,我试过使用“timestamp”,“tstamp”,“t”;设置“0”,“9999999999999”......都没有结果...

似乎我无法控制时间戳,内部设置在$ .ajax ...