2009-11-13 32 views
1

我们对当前正在rails 2.3.4中开发的站点使用gravtars,并且我发现即使gravtar发生更改,导轨侧也倾向于缓存映像侧。我知道JavaScript可以防止在使用javacript_include_tag :cache => false方法时缓存,但是,有什么方法可以在使用image_tag帮助器时防止缓存?以每个标签为基础防止在导轨上进行图像缓存

我已经阅读了一下,看起来它用来在带有一些参数的URL(即src="image.png?123123")之后追加时间戳信息,但它似乎不再做。

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

+0

什么是'image_tag'生成的html? 'image_tag'应该会生成缓存清除网址。 – 2009-11-13 01:47:30

+0

你是在谈论gravatar.com还是别的什么? – danivovich 2009-11-13 02:18:54

+0

@danivovich我的确在谈论gravatar.com @Andy,我的问题是,image_tag不会生成缓存破坏url,@avaynshtok下面提到它,因为它只对本地资源做它。 – 2009-11-15 23:20:10

回答

2

一种选择,我能想到做这将是写一个小帮手,将追加一个“?YYYYMMDDHH”到的Gravatar网址的结尾。您可以生成URL以包含年,月,日和小时。通过这种方式,浏览器缓存最多只能陈述一小时。

这会增加用户感知的加载时间,因为图像会被浏览器缓存得较慢。您可以调整多种方式:YYYYMMDD,YYYYMMDDHH等。您必须衡量具有最新的Gravatar图像与页面渲染速度的重要性。

+0

感谢巴里,这是我将不得不采取的方法,如果我确实决定采取最新的方法为用户。干杯! – 2009-11-15 23:22:04

0

您是否在谈论这个网站的http://en.gravatar.com/

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

-Anton