在 IIS 7.5 中禁用缓存?

在 IIS 7.5 中禁用缓存?

我在 Windows 7 上使用 IIS 7.5(完整版)来运行 PHP \ ASP 网站作为开发机器,但我找不到任何方法来阻止它缓存我的网站的静态页面(特别是 CSS 文件)。我一直在寻找一种方法来做到这一点,我尝试了找到的所有答案,但没有一个真正起作用。唯一有效的方法是每次重新启动服务器。我很确定这是一个服务器端问题,原因有几个。最令人信服的是,即使是从未打开过该页面的浏览器也会提供旧的 CSS 文件。以下是我尝试过的方法的简要列表:

  • style.css?##########我尝试使用(其中#代表文件的修改时间戳)来链接文件的技巧。
  • 我已将Cache-Control响应标头设置为no-cache
  • 我已经禁用 CSS 文件的输出缓存(使用配置屏幕和站点根目录中的 web.config 文件)。
  • 我已禁用静态压缩。
  • 我使用了不同的扩展style.css.iis_is_garbage。它可能(也可能不)适用于清除缓存,但我在测试之前就发现我的浏览器无法很好地运行它。

我现在唯一能想到的办法是使用不同的 Web 服务器,或者在我的网站中实际编写一些代码来复制 CSS 文件,将修改后的时间戳附加到名称(同时保持扩展名不变)并将网站指向该文件而不是原始文件。不同的 Web 服务器可能会有问题,因为我的公司不会在他们的服务器上使用它。第二种解决方案可能会有效(只是因为它让 IIS 别无选择),但这意味着在我的网站中添加一些相当无意义的代码,而我宁愿不添加这些代码(只能在产品发布时将其删除)。

我发现这个问题在 SE 上重复了好几次。大多数问题都没有公认的答案。这似乎是应该成为一个非常这是 IIS 的常见用例,但似乎没人知道如何实现。有些人确实成功地使用了 CSS 链接参数缓存破坏技术,但这对我来说不起作用(即使它可以完美地更新每个页面编辑的时间戳,但 IIS 仍然提供旧文件)。所以,如果你能以一种真正有效的方式回答这个问题,你肯定会帮助很多人。

更新

为了确保我没有弄错这是一个服务器端问题,我安装了一个我从未使用过的浏览器(Vivaldi),果然,它仍然显示旧内容。这也是我设置的第三台开发机器,三台机器都做同样的事情。如果这是我正在做的事情,那么我不知道它是什么,我使用的是非常基本的配置。我只是使用 IIS、VS 和 Netbeans 的默认设置。然后我删除所有内容C:\inetpub\wwwroot并创建两个指向 VSWebsitesNetbeansProject文件夹(位于用户目录中)的硬链接。

答案1

看看你的要点,如果你也完成了要点 2 和要点 3,那么要点 1将要工作,除非你的浏览器做了一些奇怪的事情,或者你已经说过这是为了开发,你的开发环境打开了一个与你预期不同的版本或位置。

相关内容