我的 max-age 标头来自哪里?

Joh*_* Wu 3 asp.net iis iis-7 outputcache cache-control

我很清楚如何自己设置它,但我担心在两个不同的地方配置它。要获得赏金,请告诉我应该在哪里寻找现有设置。

我们已经寻找现有设置的地方,但没有成功:

  • web.config<StaticContent>部分
  • IIS 输出缓存部分,在所有三个级别:
    • 机器
    • 地点
    • 应用
  • 代码(我对 进行了全局搜索SetMaxAge

语境

我们最近注意到我们的 CSS 和 JS 文件没有得到刷新。当我检查网络流量时,它们从服务器返回,并带有一个标头 ( Cache-Control: max-age=604800),该标头为它们提供了 7 天的生命周期。

我们需要减少缓存寿命。但对于我的生活,我找不到它的位置。

没有在 web.config<StaticContent>部分中设置。

没有在 IIS 输出缓存部分设置(我查看了机器、站点和应用程序——它们都是空白的)。

没有在代码中设置——我进行了全局代码搜索SetMaxAge并得到了 nuthin'。我还能在哪里看?

它可能是由我们数据中心的网关或负载均衡器设置的吗?

DDa*_*Dan 5

您可以在 web 配置中这样做,或者您可以使用 IIS ui 进行更改(请参阅下面的链接):

<configuration>
  <system.webServer>
    <staticContent>
       <clientCache cacheControlMode="UseMaxAge"
        cacheControlMaxAge="1.00:00:00" /> <!-- 1 day -->
    </staticContent>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在此处查看更多信息:https : //www.iis.net/configreference/system.webserver/staticcontent/clientcache

IIS 文档指出默认值为 1 天。

以下是可能影响这些设置的其他一些方式:http : //www.galcho.com/blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content。 aspx

  • applicationHost.config 中的 overrideModeDefault 值
  • 较早的 appcmd.exe 设置
  • 或客户端设置也可以覆盖您的值。