有什么办法可以让浏览器每秒都不要请求相同的图像吗?

时间:2012-12-27 07:59:39

标签: java jsp google-chrome firefox java-ee

我的jsp页面在每秒后刷新。页面上有两个图像。一个重13 KB,其他重量4 KB。 Firefox不会反复加载图像,但Chrome会一次又一次地加载这两个图像。它看起来非常糟糕!有什么办法可以阻止浏览器一次又一次地请求相同的图像吗?

3 个答案:

答案 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"结合使用。