IIS7缓存控制

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我试图做一些我认为会很简单的事情。获取IIS 7告诉客户,他们可以将我网站上的所有图像缓存一段时间,比如24小时。

我尝试了http://www.galcho.com/Blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content.aspx上的步骤,但无济于事。我仍然会收到请求返回给服务器并返回304。

有没有人有办法做到这一点?我有一个图形密集的网站,我的用户每次请求页面时都会受到攻击(我的服务器也是如此)。奇怪的是,这些图像似乎在Firebug中出现了“Cache-Control private,max-age = 3600”,但是当我按下F5时浏览器仍在请求它们。

提问于
用户回答回答于

如果你想设置缓存控制头,IIS7用户界面没有什么可以做到这一点,可悲的是。

但是,您可以将此web.config放置在要设置它的文件夹或站点的根目录中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
    </staticContent>
  </system.webServer>
</configuration>

这将通知客户端在该文件夹和所有子文件夹中缓存7天的内容。

您也可以通过编辑IIS7元数据库来完成此操作appcmd.exe,如下所示:

\Windows\system32\inetsrv\appcmd.exe 
  set config "Default Web Site/folder" 
  -section:system.webServer/staticContent 
  -clientCache.cacheControlMode:UseMaxAge

\Windows\system32\inetsrv\appcmd.exe 
  set config "Default Web Site/folder" 
  -section:system.webServer/staticContent 
  -clientCache.cacheControlMaxAge:"7.00:00:00"
用户回答回答于

只需在IIS 7管理器UI中选择一个文件夹(例如图像或事件默认Web应用程序文件夹),然后单击“HTTP响应标题”。然后,您必须在右侧窗格中单击“设置常用标题..”并选择“过期Web内容”。您可以通过选择“After:”,在文本框中输入“24”并在组合框中选择“Hours”,轻松配置24小时的最大年龄。

关于web.config条目的第一段是正确的。我会添加cacheControlCustom属性来设置缓存控制头为“公共”或任何需要在这种情况下。

当然,您可以根据需要提供web.config条目(或文件)来达到同样的目的。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励