根据Yahoo's best practices for high performance web sites,我想从我的报头中删除Etags (我正在手动管理我所有的缓存,不需要Etags...当/如果我需要扩展到一个农场时,我真的希望它们消失)。我在Windows Server2008上运行IIS7。有人知道我是怎么做到的吗?
发布于 2009-01-25 17:25:51
在IIS7下,Etag更改编号( Etag后面的部分:)始终设置为0。
因此,对于同一文件,来自服务器的Etag不再因服务器而异,因此Yahoo的最佳实践不再真正适用。
因为您不能在IIS7上实际隐藏ETag头,所以最好不要摆弄它。到目前为止,我发现最有用的配置规则是“如果默认设置没有破坏某些东西,那就别管它”。
发布于 2011-11-15 04:26:56
我写了一个自定义的http模块来处理这个问题。它真的没有听起来那么糟糕。代码如下:
using System;
using System.Web;
namespace StrongNamespace.HttpModules
{
public class CustomHeaderModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.PostReleaseRequestState += new EventHandler(application_PostReleaseRequestState);
}
public void Dispose()
{
}
void application_PostReleaseRequestState(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("Server");
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
HttpContext.Current.Response.Headers.Remove("ETag");
}
}
}
以下是您需要的web.config更改:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By"/>
</customHeaders>
</httpProtocol>
<modules>
<add name="CustomHeaderModule" type="StrongNamespace.HttpModules.CustomHeaderModule"/>
</modules>
</system.webServer>
</configuration>
发布于 2011-11-11 12:11:19
我意识到这是一个古老的问题,但我在寻找解决方案时遇到了它。我想我找到了一个合理的答案,也就是我为this question发布的答案。
https://stackoverflow.com/questions/477913
复制相似问题