【问题标题】:page reload and image caching页面重新加载和图像缓存
【发布时间】:2012-06-09 14:06:42
【问题描述】:

我发现每当我执行 window.location.reload() 时,对网页上图像的请求都会发送到服务器。图像缓存有到期日期,因此我认为它们应该从缓存中加载。因为我从服务器得到的只是未修改的 304,所以我在页面上有很多图像,所以我不希望在页面刷新时请求每个图像。

我的问题是为什么浏览器会尝试联系服务器而不是从缓存中加载它们?

谢谢!

【问题讨论】:

  • 为了清楚起见,当您说图像被缓存并带有到期日期时,您的意思是您正在手动设置 HTTP Expires 标头吗?大多数服务器默认发送 Last-Modified 标头,用于确定是否需要更新图像(这会导致 304 Not Modified 结果,如下所述)。

标签: javascript image http caching reload


【解决方案1】:

304 Not Modified 向浏览器指示它应该从缓存中重新加载。如果您查看从缓存重新加载时发送的字节数,它应该小于 1kb。

【讨论】:

  • 我理解 304 Not Modified 如果未修改则从缓存中读取,但我只是希望它从缓存中加载而不检查服务器..
  • 这不是网络的运作方式。如果是更改内容的问题,那么您将需要使用 ajax 来获取页面的特定区域并更改它们,但执行 window.location.reload() 是出于所有意图和目的,与用户单击浏览器中的重新加载按钮没有区别。
  • 您是否可以手动设置 HTTP Expires 标头以不向服务器发送其他请求,如缓存方法 3 部分 here 中所述。
  • 嗨 netfire,Expires 标头有效,除非您调用 window.location.reload(),它实际上会转到服务器以验证是否有任何更改。我希望到期标头在window.location.reload() 被调用..
  • 您可以通过调用 window.location.href="/page/url" 来刷新页面,而不是调用 reload 函数,但听起来 ajax 在这里会是一个更好的解决方案。这样就不会对 js 文件和 css 样式表发出额外的请求,并且浏览器不必再次重新渲染整个页面。
猜你喜欢
  • 1970-01-01
  • 2014-01-08
  • 2015-01-21
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
相关资源
最近更新 更多