【问题标题】:cache busting using url-rewrite doesn't seem to work in iis使用 url-rewrite 的缓存破坏似乎在 iis 中不起作用
【发布时间】:2016-01-05 21:37:06
【问题描述】:

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

<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结尾。

如果我手动将版本字符串添加到图像 url,每次更新版本字符串时,我都会按预期得到一个 200 响应代码。

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

【问题讨论】:

    标签: asp.net caching iis browser-cache


    【解决方案1】:

    我得到了答案。无法以这种方式进行缓存清除,因为:

    当浏览器请求资源时:

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

      如果没有匹配:7dee9bc1f8cf1:0

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

    4. 这些附加标头指示服务器仅在上述条件失败时才返回文件。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2016-11-08
      • 1970-01-01
      • 2011-09-03
      • 2011-03-09
      • 1970-01-01
      相关资源
      最近更新 更多