【问题标题】:Why does Google Chrome NOT use cached pages when I define the HTTP "Expires" header为什么我定义 HTTP“过期”标头时 Google Chrome 不使用缓存页面
【发布时间】:2011-05-04 09:35:47
【问题描述】:

我正在发送格式有效的 HTTP 响应“过期”标头(例如“Wed,2011 年 5 月 4 日 09:29:09 GMT”),页面通过 https://[host]:{port}/(带有 [ host] 是本地主机)来自 J2EE 应用程序,使用 response.setDateHeader("Expires", {milliseconds a few seconds in the future} )

在我的页面上,我有一个指向同一页面的链接。当我在 Firefox (4) 或 IE (8) 中单击此链接时,页面将从缓存中重新加载,直到达到过期时间。过期时间过后,单击同一链接会导致页面从服务器加载新数据。如果我在上述任一浏览器上按 F5,页面会重新加载来自服务器的新数据(Firebug 显示 Cache-Control: max-age=0 正在与请求一起发送)。

使用谷歌浏览器,F5 和点击链接都具有相同的效果。该页面总是从服务器重新加载新数据。

我找不到任何有据可查的关于这种效果的解释。

有谁知道为什么在我的情况下,谷歌浏览器不尊重服务器与页面响应一起发送的“过期”标头,因此总是从服务器请求数据?

【问题讨论】:

    标签: google-chrome jakarta-ee http-headers browser-cache


    【解决方案1】:

    chrome 在这方面的工作方式可能会导致极度混乱。似乎按下 F5 或“重新加载此页面”只会阻止 chrome 处理来自缓存的请求。这很容易与在 url 窗口中按 enter 进行比较,它将使用缓存,即使在这两种情况下请求标头(不会发送到任何地方)都有 Cache-Control: max-age=0。

    如果你按 ctrl+F5 你会得到 Cache-Control: no-cache。我认为 F5 和 ctrl+F5 之间的区别在于两者都会导致向服务器发送请求,但在 ctrl+F5 的情况下,服务器应该知道不响应未修改的 304。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      相关资源
      最近更新 更多