我的jsp页面在每秒后刷新。页面上有两个图像。一个重13 KB,其他重量4 KB。 Firefox不会反复加载图像,但Chrome会一次又一次地加载这两个图像。它看起来非常糟糕!有什么办法可以阻止浏览器一次又一次地请求相同的图像吗?
答案 0 :(得分:2)
您应该设置适当的Expire
标头和Last-Modified
标头。来自the maker of Chrome:
建议
为所有静态资源积极设置缓存标头。对全部 可缓存资源,我们建议使用以下设置:设置过期 至少一个月,最好是一年,在 未来。 (我们更喜欢Expires over Cache-Control:max-age因为它是 得到更广泛的支持。)不要把它设置为超过一年 未来,因为这违反了RFC指南。如果你确切知道什么时候 资源会发生变化,设置较短的过期是可以的。 但如果你认为它“很快就会改变”,但不知道什么时候,你 应该设置一个长期到期并使用URL指纹识别(描述 下面)。积极地设置缓存不会“污染”浏览器 缓存:据我们所知,所有浏览器都清除了缓存 至少使用最少的算法;我们不知道任何浏览器 等到资源到期后再清除它们。
将Last-Modified日期设置为上次更改资源的时间。 如果Last-Modified日期在过去足够远, 很可能浏览器不会重新获取它。
如果您在HTTPS下投放,则需要在服务器上安装正确的证书,否则Chrome不会缓存任何内容。
答案 1 :(得分:1)
基于this side:
不要把大部分时间花在这上面。我非常有信心它是如何在刷新时处理iframe的浏览器行为。我通过FireFox打开了代码,然后我更改了文件中的URL,保存了,然后刷新了页面。它继续重新加载原始URL(在刷新之前),然后触发onLoad函数加载带有新URL的iframe。
所以整个事情都是浏览器特定的。如果您想要动态刷新,您应该学习AJAX
答案 2 :(得分:0)
专业的解决方案是从另一台服务器(即facebook使用fbcdn而不是www)获取媒体文件,您可以在专用环境中完全控制所有缓存机制。
另一个好的解决方案是使用 etag -functionality(http://en.wikipedia.org/wiki/HTTP_ETag),这必须尊重https认证为mtrbean的建议。
最后修改日期也是一个很好的解决方案,将它与" Pragma:no-cache"结合使用。