在 IIS 7 中禁用静态内容缓存

在 IIS 7 中禁用静态内容缓存

我是一名开发人员,在 Windows Server 2008 R2 上的 IIS 7 中遇到了一个相对简单的问题。问题是 IIS 7 过度热衷于在服务器上缓存所有静态内容。它缓存了所有 .html 和 .js 内容,并且除非我执行 iisreset,否则不会注意到磁盘上的内容何时发生变化。

我尝试了以下方法:

  1. 删除浏览器中的本地缓存(我 99% 肯定这是一个服务器缓存问题)
  2. 在 IIS Admin 的 OutputCaching 中添加 .html 扩展名并取消选中“用户模式缓存”并取消选中“内核模式缓存”
  3. 在 IIS Admin 的 OutputCaching 中添加 .html 扩展名,勾选“用户模式缓存”,勾选“阻止所有缓存”
  4. 在 IIS 管理员中编辑输出缓存功能设置并取消选中“启用缓存”和“在 OutputCaching 下启用内核缓存”。
  5. 运行“C:\Windows\System32\inetsrv\config\appcmd 设置配置“SharePoint - 80”-section:system.webServer/caching -enabled:false”
  6. 查看 applicationHost.config 并禁用我能找到的与缓存相关的任何内容。

似乎什么都不起作用。我非常沮丧。有人能帮忙吗?

答案1

我非常想看看system.webServer/caching您的 applicationhost.config 和 web.config 中的部分。如果可以,请粘贴它们。通过运行上述 appcmd 命令,您刚刚禁用了用户模式缓存,但您仍然启用了内核缓存。此外,如果您确实想在网站或服务器级别禁用缓存,只需更改以下内容:

<system.webServer>
    <caching enabled="false" enableKernelCache="false" />
</system.webServer>

您还可以使用 Fiddler 工具来验证内容是否真的被缓存,即它是否返回 304。

答案2

在服务器上,如果您运行“netsh http show cache”,您是否看到任何缓存条目?如果是,则说明您未成功禁用 Web 服务器上的输出缓存。

答案3

只需花费 0.02 美元即可检查您的处理程序是否是您期望的处理程序。

静态文件通常由静态文件处理程序提供。如果您做了一些疯狂的事情,例如创建通配符脚本映射,或为所有文件类型和动词注册一个模块……

相关内容