【问题标题】:How do I stop IIS from caching any files, ever, under any circumstances?在任何情况下,如何阻止 IIS 缓存任何文件?
【发布时间】:2015-07-08 04:46:47
【问题描述】:

我为工作做一些 Web 开发,而对我的工作效率最大的打击来自 IIS。它缓存即使更改也不会更新的文件,除非我重新启动 IIS。具体来说,我指的是 html、js 和 css 文件。这个问题迫使我不断地停止和启动我的 Web 应用程序。因为我有 Windows 7,所以我相信我有 ISS 7.5。我正在使用 IIS Express。这太令人沮丧了,我宁愿 IIS 永远不要缓存任何东西。我对停止所有形式的缓存或仅针对我正在从事的项目的解决方案感到满意。

IIS 管理器对我不可用。它不像https://technet.microsoft.com/en-us/library/cc770472%28v=ws.10%29.aspx 所建议的那样位于系统和安全 -> 管理工具 -> IIS 管理器中。此外,在“开始搜索”框中搜索 inetmgr 没有结果。因此,我正在寻找 IIS applicationhost.config 文件的修复程序。

我尝试将以下内容放入我的 applicationhost.config 中,但不起作用:

<location path="ProjectName">
    <system.webServer>
        <staticContent>
           <clientCache cacheControlCustom="public" cacheControlMode="DisableCache" />
        </staticContent>
       <caching enabled="false" enableKernelCache="false"></caching>
    </system.webServer>
</location>

StackOverflow 上与我的问题最接近的问题是IIS cached files never replaced。但是,Fiddler 向我展示了旧文件即使在它们被更改后也被发送到浏览器。

IIS 如何在不重新启动浏览器的情况下向我的浏览器发送更新的文件?

【问题讨论】:

    标签: caching iis-express


    【解决方案1】:

    很可能是浏览器是罪魁祸首。 你试过 ctrl+ F5 吗?

    【讨论】:

    • 浏览器有问题,他们的开发人员应该在列出的站点上禁用缓存。然而,在大多数情况下,浏览器会按照服务器告诉他们的操作进行操作,这意味着服务器配置......直到浏览器开发人员伸出手来。
    【解决方案2】:

    我怀疑您已启用输出缓存,这将表现出您所描述的行为,其中回收应用程序池或重新启动 IIS 会清除它们并允许您查看新内容。

    此页面提供更多信息,http://www.iis.net/learn/manage/managing-performance-settings/walkthrough-iis-output-caching

    如果您使用的是 IIS Express,那么很可能缓存是在您的 web.config 中的应用程序级别设置的,或者是在单个页面上设置的。

    你需要设置

    <caching>
       <outputCache enableOutputCache="false" />
    </caching>
    

    或者如果它的 IIS 7+(IIS Express 将是)

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

    【讨论】:

      【解决方案3】:

      如果有人偶然发现这一点并想要在 IIS 7 左右禁用缓存的“鼠标单击”方式......这是来自 IIS 论坛https://forums.iis.net/t/959070.aspx 的答案:

      这是 IIS 7.5(在 Windows 7 中)的更新。禁用缓存是一个 当您不关心时,在开发过程中要做的好事 性能,并希望看到变化立即发生。它加速 发展进程。 - 启动 IIS 管理器(在开始菜单中的搜索程序和文件中键入 IIS) - 导航到连接树中的所需站点(默认网站) - 打开输出缓存 - 编辑功能设置 - 取消选中启用缓存和启用内核缓存

      您会在 web.config 文件中获得如下设置:

      <caching enabled="false" enableKernelCache="false">
                  <profiles>
                      <add extension=".css" policy="DontCache" kernelCachePolicy="DontCache" />
                      <add extension=".script" policy="DontCache" kernelCachePolicy="DontCache" />
                  </profiles>
              </caching>
      

      所以,这里没有标签..

      【讨论】:

      • 如果你在一个文件已经被缓存之后添加了这些缓存指令,如何从缓存中删除文件?重新启动 IIS 似乎没有解决问题。
      猜你喜欢
      • 2011-03-02
      • 2018-12-17
      • 2020-12-20
      • 2019-10-23
      • 2012-05-05
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      相关资源
      最近更新 更多