配置的ETag在asp.net的HTTP模块(Configuring ETags with Http

2019-06-26 03:44发布

我正在优化我们的公司网站与seo优化和YSlow的。 但在YSlow的的ETag是F。 我已经通过数万网站和教程,最好的选择是使用HTTP模块的走了。 我这样做,并试图几个模块,但没有显示在语法results.maybe什么是错的,否则我注册错了。有的说,这是最好用的,而不是因为heap.I've使用的崩溃OnPreSendRequestHeaders app_PostReleaseRequestState既没有结果。 在这里,它是:文件名是ETAG,它是在应用程序代码的文件夹

网络配置:

<system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
        <add type="CompressionModule" name="CompressionModule"/>
            <add type="ETags" name="ETags"/>
        <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </modules>
    </system.webServer>

这里是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for ETags
/// </summary>

    public class ETags : IHttpModule
    {
        public void Dispose() { }
        public void Init(HttpApplication app)
        {
            app.PostReleaseRequestState += new EventHandler(app_PostReleaseRequestState);

        }
        void app_PostReleaseRequestState(object sender, EventArgs e)
        {
            HttpContext.Current.Response.Headers.Remove("ETag");
            HttpContext.Current.Response.Headers.Remove("Server");
            HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
            HttpContext.Current.Response.Headers.Remove("X-Powered-By");
        }
        //public void Init(HttpApplication context)
        //{
        //    context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        //}

        //void OnPreSendRequestHeaders(object sender, EventArgs e)
        //{
        //    HttpContext.Current.Response.Headers.Remove("ETag");
        //    HttpContext.Current.Response.Headers.Remove("Server");
        //    HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
        //    HttpContext.Current.Response.Headers.Remove("X-Powered-By");
        //}
    }

谢谢您的回答。

Answer 1:

首先,你可以删除服务器变量在你的服务器! 而不是让他一次又一次把它,然后你将其删除。

您可以使用做,即使在你的web.config customHeaders

<httpProtocol>
    <customHeaders>
        <remove name="X-Powered-By" />
        <remove name="X-UA-Compatible" />
        <remove name="ETag" />
    </customHeaders>
</httpProtocol>        

的eTag或实体标签是办法国旗的页面,然后在你的代码中看到,如果页面已经改变,必须更新。 如果你看到的ETag那么你的代码的某些部分是增加了这样的检查,我认为你必须离开它,因为它是因为你违反了程序的这种逻辑。

如果ETag的是服务器的标志图像或类似物品的地方,你可以通过添加静态内容是现场更避免大多数这个标签,而这也可以在IIS上进行,或在web.config中的。

<staticContent>
    <clientCache cacheControlMaxAge ="8.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>

因此,我认为你所做的模块是没有必要为这个想。



文章来源: Configuring ETags with Http module in asp.net
标签: asp.net etag