HTTP Header Remove/Change 设置后的 ETag Cache-Control:no-cache

HTTP Header Remove/Change ETag after setup Cache-Control:no-cache

如何通过服务器响应删除浏览器中的缓存文件?

我不小心设置了

Cache-Control:no-cache

然后我客户的浏览器中有很多缓存了 javascript 文件。我已经更改了服务器的 http 状态,新的响应应该有

Expire:0
Cache-Control:no-store

但是缓存的文件没有得到最新的文件。所以我正在阅读一些文章并尝试 remove/change ETag header 并尝试添加

<customHeaders>
        <add name="ETag" value=" " />
</customHeaders>

但是没有用。我还尝试禁用 IIS 中输出缓存的所有缓存。

但是不行。

如何让浏览器在不由用户端操作的情况下获取最新文件?

谢谢!

要在 iis 中禁用客户端缓存,您可以使用 HTTP 响应 Headers 功能:

1)打开 iis 管理器,select 您的站点。

2)双击中间窗格中的 HTTP 响应 Headers。

3)在 HTTP 响应 Headers 页面上的“操作”窗格中,单击设置通用 Headers。

4)在设置通用 HTTP 响应 Headers 对话框中,select 使 Web 内容过期复选框和 select 以下选项之一:

  • Select 如果您希望内容在响应中发送后立即过期。

  • Select 如果您希望内容定期过期。然后,在相应的框中,键入一个整数和 select 内容过期的时间间隔。例如,如果您希望内容每天过期,请键入 1 和 select 天。

  • Select 如果您希望内容在特定日期和特定时间过期,则启用(协调世界时 (UTC))。然后,在相应的框中,select 内容过期的日期和时间。

如果您有权访问源代码商城,现代浏览器会将 CSS、Javascript 等资源视为新版本,前提是您向它们附加唯一的查询字符串。

例如

http://www.example.com/test.js?v=1.1

您可以使用位置标签禁用特定文件和文件夹的缓存:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Specific file -->
  <location path="test.js">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="DisableCache" />
      </staticContent>
    </system.webServer>
  </location>

  <!-- Folder including subfolders -->
  <location path="folder/subfolder">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="DisableCache" />
      </staticContent>
    </system.webServer>
  </location>
</configuration>