【问题标题】:How do you set the expiry date or a maximum age in the HTTP headers for static resources in IIS如何在 IIS 中的静态资源的 HTTP 标头中设置到期日期或最长期限
【发布时间】:2011-07-30 14:13:08
【问题描述】:

我使用 IIS 6IIS 7 作为 Web 服务器。

运行Google page speed online后,提示我应该是:Setting an expiry date or a maximum age in the HTTP headers for static resources instructs the browser to load previously downloaded resources from local disk rather than over the network.

它列出了很多普通的图像、我的javascript文件样式表

我如何为这些静态文件设置有效期?我以为这是浏览器自动完成的?

【问题讨论】:

  • 奇怪,在这个问题上获得了一个受欢迎的问题徽章,但没有人支持它。 :)

标签: caching iis


【解决方案1】:

应在 IIS 的 Web.config 文件中设置静态文件的到期日期。我对国际空间站了解不多,但在网上找到了这个

http://www.iis.net/learn/application-frameworks/install-and-configure-php-applications-on-iis/translate-htaccess-content-to-iis-webconfig

<caching>
   <profiles>
     <add extension=".php" policy="DisableCache" kernelCachePolicy="DisableCache" />
     <add extension=".html" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="14:00:00:00" />
   </profiles>
</caching>

以上代码将为 .html 文件启用最多 14 天的缓存。对于 .php 文件,请确保不执行缓存。

更多信息请参考http://www.iis.net/configreference/system.webserver/staticcontent/clientcache

【讨论】:

    【解决方案2】:

    有时,如果您没有设置 Cache-Control max-age 和 Expires 标头,google 工具会抱怨,IIS 只是设置了 max-age,这应该没问题。您可以通过使用 chrome 或 firebug 并查看 Net Debug 面板并检查响应标头来确认。

    【讨论】:

      【解决方案3】:

      利用浏览器缓存:

      设置到期日期或最大值 静态 HTTP 标头中的年龄 资源指示浏览器 加载以前下载的资源 从本地磁盘而不是通过 网络。

      http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching

      在静态资源的 HTTP 标头中设置到期日期或最长期限

      打开 IIS 管理器-> 单击您的站点-> 单击主页中的 HTTP 响应标头-> 单击操作面板上的设置公共标头-> 检查 Web 内容过期-> 7 天后设置(如在页面速度分析“为以下资源指定至少一周后的到期时间”

      http://technet.microsoft.com/en-us/library/cc770661%28WS.10%29.aspx

      【讨论】:

      • 我确实将此参数设置为 7 天,但今天使用 Google 页面速度进行测试仍然会产生相同的警告。但是,我没有重新启动网站。不知道是否需要重启才能使这个参数生效?
      • @edelcom 您可以重新启动 IIS 并再次检查。打开 IIS 管理器并再次导航到该设置并仔细检查。如果您可以在本地模拟设置。这将是测试的好主意
      • Google 说(We prefer Expires over Cache-Control: max-age because it is is more widely supported.) Do not set it to more than one year in the future, as that violates the RFC guidelines. 不幸的是,IIS 不允许您设置动态过期标头。这意味着他们的 pagespeed 工具将始终报告您需要“利用浏览器缓存”
      • @Ramiel 这似乎设置了所有内容的过期时间,但是根据内容类型设置过期时间不是更好,例如css/javascript/图像/aspx?分别地?如果是这种情况,该怎么做?谢谢!
      • @ChrisS FWIW PageSpeed 似乎对在 IIS 上使用 max-age 感到满意,as per this answer
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 2013-12-06
      • 2015-11-08
      • 2010-10-26
      • 1970-01-01
      • 2014-03-27
      相关资源
      最近更新 更多