IIS 7.5从响应中删除etag标头

piv4azn7  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(137)

我知道这个问题已经被问了很多次,但大多数都是在2009-2010年。
我很确定前一段时间我正在做的一个项目删除了它们,但是我现在找不到任何方法来删除它们。
这方面有什么进展吗微软让IIS无法轻松配置这些头文件,这似乎很疯狂。
目前已尝试:

  • 向web.config添加一个空白的etag头
  • 在web.config中添加带引号的etag
  • 直接通过IIS添加空白etag头
  • 添加一个自定义模块,删除BeginResponse上的etag
  • 与上述相同,但针对EndResponse
  • 与上面两个相同,但不是删除一个etag,而是使其为空

我听说有一个ISAPI过滤器可以删除它们,但我在任何地方都找不到它,并且没有从头开始编写的经验,但最终可能是唯一的方法。
所以有一些原因,我想删除Etags的一切。我让客户端缓存所有内容(过期和最后修改),因此一旦从服务器获取静态文件,它就不需要再次查询服务器,直到它过期。就像使用Etags一样,您仍然需要向服务器请求每个文件,以确定标签是否仍然匹配。因此,使用客户端缓存,您只需要请求您需要的内容。
我也有一个版本控制系统,所以当一个变化发生时,静态内容被引用为my.js?12345而不是my.js?12344.无论如何,我现在相信删除Etags将大大改善我当前项目的瓶颈之一。

smdnsysy

smdnsysy1#

您可以使用IIS Rewrite Module 2.0删除ETag。下面的重写规则应该可以做到这一点:

<rewrite>
   <outboundRules>
      <rule name="Remove ETag">
         <match serverVariable="RESPONSE_ETag" pattern=".+" />
         <action type="Rewrite" value="" />
      </rule>
   </outboundRules>
</rewrite>

字符串
You can see an example image of the rule configuration in IIS Manager on my blog

5jvtdoz2

5jvtdoz22#

对于IIS 8(及更高版本)
感谢this post on blogs.iis.net为我指明了正确的方向。
参考:IIS文档网站上的clientCache
在你的web.config中,添加:

<configuration>
    <system.webServer>
    ...

        <staticContent>
            <clientCache setEtag="false"/>
        </staticContent>

    ...
    </system.webServer>
</configuration>

字符串

相关问题