IIS 缓存控制标头设置

IIS 缓存控制标头设置

我目前正在开发一个通过 https 访问的网站。我们最近遇到了一个问题,我们无法查看.pdf文件或以附件形式发送的任何其他类型的文件 ( Content-Disposition:attachment)。

根据Microsoft 知识库这是因为Cache-Control设置为no-cache。但是,我们要求每次访问时都要完全重新加载所有页面,因此我们已禁用所有页面的缓存(通过我们的 ASP 代码,而不是通过 IIS 设置)。

但是,我对此显示附件的页面进行了特殊处理,现在它返回一个标头,并将Cache-Control:private到期时间设置为 1 分钟后。当我在本地机器上使用 https 进行测试时,此方法运行良好。但是,当我将其部署到我们的测试服务器并尝试时,响应标头仍然返回Cache-Control:no-cache

我和服务器之间没有防火墙或其他任何东西,所以 IIS 本身必须添加这些标头并替换我的标头。我不知道它为什么要这样做,而且这实际上没有任何意义,但这似乎是目前唯一的选择(我还没有在代码中找到任何其他会更改缓存标头的地方)。

有人能指出 IIS 可能设置这些标头值的地方吗?

编辑:事实证明 IIS不是弄乱了我的缓存设置。相反,我发布的文件夹与 IIS 提供的文件夹不同。我在检查路径时发现了这一点,并且我注意到 IIS 提供的文件太旧了。将 IIS 指向正确的文件夹解决了我遇到的所有问题。

答案1

在 IIS 中可以控制缓存的地方很少。

所有设置都应保存在网页配置如果允许适当的功能配置在本地保存(查看功能委托),否则将其保存在主配置文件中:根Web配置(.NET 框架的一部分,例如:)C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config和/或应用程序主机配置C:\Windows\System32\inetsrv\config\ApplicationHost.config)。 发射IIS 管理控制台(IIS 管理器),然后“配置编辑器”,然后“搜索配置”(在侧边栏),您将能够看到 IIS 已知的所有配置文件以及搜索特定设置。

  1. HTTP 响应标头- 最有可能要注意的地方:可能有一个自定义标题设置明确禁止缓存..或通过侧边栏/内容菜单上的“设置常用标题...”。

  2. 输出缓存也可能会影响缓存标头(我自己从未使用过这个,因此无法透露更多信息)。

  3. URL 重写v2.x 也可用于重写响应头(出站规则)。

附言 这个问题更适合问服务器故障—— 这是“系统管理员”类别的问题,而不是网站管理员的问题。

答案2

我如何解决我的问题(因为我也编辑了问题,但在这里添加以将其标记为已解决)。

事实证明,IIS 并没有弄乱我的缓存设置。相反,我发布到的文件夹与 IIS 提供的文件夹不同。我在检查路径时发现了这一点,并且注意到 IIS 提供的文件太旧了。将 IIS 指向正确的文件夹解决了我遇到的所有问题。

答案3

在我的例子中,缓存输出设置中的“扩展”是“.ext”,而不仅仅是“ext”,所以我设置的策略没有生效。修复这个问题后,我还发现我不需要设置 Cache-Control 响应标头。

相关内容