Chrome正在为已经加载的图像发出GET请求?

3
我正在为Facebook制作一个JS游戏,正在预加载所有图像。在Chrome浏览器上,但还没有在其他浏览器上看到,一旦我打开一个新选项卡并浏览几个站点,Chrome将为已经在缓存中且在屏幕上的图像发出新的GET请求。

出于测试目的,我将所有图像都放在游戏的一侧,大小为20x20像素。但是,如果我打开一个新选项卡,然后浏览Web约5分钟,那么之前未出现在主游戏div中的图像(即使它们位于“预加载”div中)再次添加到页面时,也会重新加载。

后端是Heroku上的Rails 3.2。

我尝试禁用所有Chrome插件,清除缓存以及尝试了几种不同的预加载策略。

已解决

页面缓存正常,但图像无法缓存。我在我的rails production.rb文件中添加了以下行,问题似乎得到解决。


你应该确保 Chrome 已经确认图片 应该 被缓存。如果你不熟悉如何通过 HTTP 头来指定这一点,请阅读。否则,你肯定会看到浏览器之间的行为差异。 - goat
此外,浏览器的缓存大小有限。当遇到新的可缓存条目时,它们经常会清除旧条目以腾出空间,即使旧条目应该被缓存很长时间。 - goat
我尝试将max-age设置为2小时,但没有任何区别。实际上,它在我浏览其他几个页面后,打开页面大约1分钟左右就会做到这一点。而且我清除了缓存,所以它并没有满。我相当确定这与chrome和JS生成的内容有关,但我的尝试想法已经用尽了。非常感谢。 - Adrian
1
好的,我的错。页面缓存正常,但图片没有缓存。我在我的Rails production.rb文件中添加了以下行,问题似乎已经解决了!'config.static_cache_control = "public, max-age=7200"' - Adrian
将其作为答案发布并接受。 - c69
1个回答

1
页面缓存正常,但图片不行。我在我的 Rails production.rb 文件中添加了以下代码行,问题似乎得到解决。
config.static_cache_control = "public, max-age=7200"

感谢 @chris 帮我找到正确的方向!


如果您需要更新图像,请确保使用不同的URL。否则,它们将继续被缓存,网站访问者(游戏玩家)将无法获取图像的更新版本。 - calvinf
谢谢您发布这个!你让我的一天变得更美好了! - Felix Alcala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接