3

seo 最適化と yslow を使用して会社の Web サイトを最適化しています。しかし、yslow では ETAG は F です。私は何十もの Web サイトとチュートリアルを調べましたが、最善の選択肢は HTTP モジュールを使用することでした。私はそうしていくつかのモジュールを試しましたが、何も結果を示しません.おそらく構文の何かが間違っているか、間違って登録しています.ヒープのクラッシュのため、OnPreSendRequestHeadersの代わりにapp_PostReleaseRequestStateを使用するのが最善だと言う人もいます.私は使用しましたどちらも結果なし。ここにあります:ファイル名はetagで、app-codeフォルダーにあります

ウェブ構成:

<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");
        //}
    }

回答ありがとうございます。

4

1 に答える 1

3

まず、サーバーのサーバー タグを削除できます。彼に何度も何度も配置させてから、それを削除しないでください。

以下を使用して、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 as.

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

なので、あなたが作ったモジュールはこれには必要ないと思います。

于 2012-07-09T11:13:32.480 に答える