基于每个标记防止在rails中的图像缓存

时间:2009-11-13 01:23:04

标签: ruby-on-rails helper assets

我们正在使用gravtars用于当前在rails 2.3.4中开发的站点,并且我发现即使在gravtar侧发生变化之后,rails侧也会缓存图像。我知道使用javascript你可以在使用javacript_include_tag :cache => false方法时阻止缓存,但是,有没有办法在使用image_tag助手时阻止缓存?

我已经阅读了一下,看起来它曾经在url后面附加了一些参数(即src="image.png?123123"),但它似乎不再这样做了。

任何想法,或者我应该停止使用那些该死的乐于助人的助手作为拐杖,并且在我的轨道中开发生活一次写下一些实际代码?

2 个答案:

答案 0 :(得分:2)

我能想到的一个选择就是编写一个小帮手,将“?YYYYMMDDHH”附加到Gravatar URL的末尾。您可以生成包含年,月,日和小时的URL。这样,浏览器缓存应该只有一个小时的陈旧时间。

这会增加用户的感知加载时间,因为图像的浏览器缓存速度会降低。你可以调整任意数量的方式:YYYYMMDD,YYYYMMDDHHm等。你必须权衡最新的Gravatar图像与页面渲染速度的重要性。

答案 1 :(得分:0)

您是在谈论网站http://en.gravatar.com/吗?

Rails仅将缓存清除时间戳附加到本地资源。如果从其他站点请求图像,则不会修改src属性。如果您需要欺骗浏览器不缓存远程图像,则必须手动设置src。

-Anton