在Rails和浏览器中停止缓存图像?

时间:2009-12-16 16:00:58

标签: ruby-on-rails ruby browser caching

我创建了一个图像裁剪工具,我可以点击图像并裁剪它,然后将新裁剪的图像保存在旧图像上,然后重定向回原始页面,显示图像。

但即使重定向后它仍会显示旧图像,并且在刷新页面之前不会显示新图像。

我尝试过使用图片代码并删除图片后的资产时间戳,但仍显示旧图片,我也尝试添加元标记以停止浏览器缓存但不能正常工作。

如何在不进行刷新页面的情况下解决这个问题?

2 个答案:

答案 0 :(得分:5)

这可能不是最好的方法,但我过去只是通过使用JavaScript向图像URL附加时间戳来解决这个问题:

http://www.mysite.com/img/some_image.jpg?timestamp=12342312412

下次加载时,时间戳设置为当前时间且URL不同,因此浏览器为图像执行GET而不是使用缓存版本。

答案 1 :(得分:2)

您是否在视图中使用rails image helper tag:image_tag?

Rails会根据图像文件的上次修改日期自动附加时间戳,这样做很方便,因为它会在您裁剪并写出新图像时更改。

文档中的更多信息:http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html