使用url-rewrite进行缓存清除似乎无法在iis中运行

时间:2015-10-08 10:13:21

标签: asp.net caching iis browser-cache

要使用版本字符串破坏图像缓存,我使用了以下内容:

<system.webServer>
  <rewrite>
    <rules>
        <rule name="PNG Versioning">
            <match url="(.*).png" />
            <action type="Rewrite" url="{R:0}" appendQueryString="true" />
            <conditions>
                <add input="{QUERY_STRING}" pattern="ver=20190327" negate="true"/>
            </conditions>
        </rule>
    </rules>
</rewrite>
</system.webServer>

但是更改版本字符串的值仍然会在304

中结束

如果我手动将版本字符串添加到图片网址,则每次更新版本字符串时,我都会按预期获得200响应代码。

那么,为什么不像其他方法那样重写url-rewrite工作?

1 个答案:

答案 0 :(得分:0)

我得到了答案。这种方式无法实现缓存清理,因为:

当浏览器请求资源时:

  1. 检查资源是否在缓存中
  2. 如果资源不在缓存中,则会发送GET请求以获取文件
  3. 如果资源在缓存中,它会再次发送GET请求来获取文件,但是有一些额外的标题

    if-none-match:7dee9bc1f8cf1:0

    if-modified-since:星期二,2014年11月4日07:34:16 GMT

  4. 这些额外的标题指示服务器仅在上述条件失败时才返回文件。

  5. 向网址添加类似?v = 1.123的查询字符串会使浏览器认为它是新的路径/文件,因此浏览器不会使用GET请求发送上述标头。