0

我的jsp页面每秒刷新一次。页面上有两张图片。一个重 13 KB,另一个重 4 KB。Firefox 不会一次又一次地加载图像,但 chrome 会一次又一次地加载这两个图像。而且看起来很糟糕!有什么办法可以阻止浏览器一次又一次地请求相同的图像?

4

3 回答 3

2

您应该设置适当的Expire标题和Last-Modified标题。来自Chrome 的制造商

建议

  • 为所有静态资源积极设置缓存标头。对于所有可缓存资源,我们建议使用以下设置: 将 Expires 设置为至少一个月,最好设置为未来一年。(我们更喜欢 Expires 而不是 Cache-Control: max-age,因为它得到了更广泛的支持。)不要将其设置为未来一年以上,因为这违反了 RFC 指南。如果您确切知道资源何时会更改,则可以设置较短的到期时间。但是,如果您认为它“可能很快会改变”但不知道何时,您应该设置一个较长的过期时间并使用 URL 指纹识别(如下所述)。积极设置缓存不会“污染”浏览器缓存:据我们所知,所有浏览器都根据最近最少使用算法清除缓存;

  • 将 Last-Modified 日期设置为上次更改资源的时间。如果 Last-Modified 日期在过去足够远,浏览器很可能不会重新获取它。

如果您在 HTTPS 下提供服务,则需要在服务器上拥有正确签名的证书,否则 Chrome 将不会缓存任何内容。

于 2012-12-27T18:31:01.850 回答
1

基于这一面

不要在这上面花费太多时间。我非常有信心这是浏览器在刷新时如何处理 iframe 的行为。我通过 FireFox 打开了代码,然后我更改了文件中的 URL,保存,然后刷新了页面。它继续重新加载原始 URL(在刷新之前),然后触发 onLoad 函数使用新 URL 加载 iframe。

所以整个事情都是特定于浏览器的。如果你想要动态刷新,你应该学习 AJAX

于 2012-12-27T09:29:42.123 回答
0

专业的解决方案是从另一台服务器获取媒体文件(即 facebook 使用 fbcdn 而不是 www),您始终可以完全控制专用环境中的所有缓存机制。

另一个好的解决方案是使用etag功能(http://en.wikipedia.org/wiki/HTTP_ETag),这必须遵守 mtrbean 建议的 https 认证。

最后修改日期也是一个很好的解决方案,将其与“Pragma: no-cache”结合使用。

于 2012-12-31T12:26:05.433 回答