【问题标题】:Why am I getting 304 when - "every time I visit the page" is on?为什么当“每次我访问该页面”打开时我会收到 304?
【发布时间】:2013-10-14 07:30:35
【问题描述】:

我们有一个具有此设置的(旧)内部网站

Every time I visit the page:是的

但我仍然可以在开发人员工具中看到许多304 回复:

问题

  • 这是为什么呢?如何强制将所有回复视为200

相关信息:

IIS 7.5

它发生在IE9-10(该站点仅在 IE 上运行)(浏览器模式更改为 ie9,因为它是旧网站(内联网),未针对新浏览器进行调整。

使用提琴手 - 它也显示 304。

请求头示例:

【问题讨论】:

  • 为什么你想这样做?当前行为提供了更好的性能和与完全关闭缓存相同的正确性...
  • @EricLaw 我没有构建系统。如果未设置“每次访问页面”,则有一些 ajax 调用不起作用。
  • 你误会了。当您设置 Every time I visit the page 时,您将获得 304。没关系。别管 304 了——他们正在做他们应该做的事。

标签: internet-explorer http-headers browser-cache fiddler http-status-code-304


【解决方案1】:

每次访问网页时检查存储页面的更新版本

仅仅意味着 IE 将('check',因此)在请求中包含与缓存相关的标头(If-Modified-SinceETag 等)。只有当服务器感觉缓存“未命中”时,服务器才会返回200

另外,请注意,仅当服务器未能使用 Cache-ControlExpires 响应标头指定缓存新鲜度生命周期时,相关设置才适用。请参阅this article条件请求部分了解更多信息。

如果您想将服务器配置为禁用整个目录的客户端缓存,请尝试以下操作:

<configuration>
  <location path="your_assets_dir">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="DisableCache" />
      </staticContent>
    </system.webServer>
  </location>
</configuration>

【讨论】:

    【解决方案2】:

    http 304 代码是 SERVER 代码,所以你的浏览器和它的设置并没有真正相互关联,304 代码意味着浏览器发送了 if-modified-since,服务器检查了这个日期并返回“未修改”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-04
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 2015-03-10
      • 2011-10-31
      相关资源
      最近更新 更多