0

私はいくつかの細かい seo を行っていますが、バンドルおよびミニ化された css ファイルが圧縮されていないことを示す firebug が心配です。とjsファイル?

ここにフィルターがあります:

  public class CompressFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpRequestBase request = filterContext.HttpContext.Request;

            string acceptEncoding = request.Headers["Accept-Encoding"];

            if (string.IsNullOrEmpty(acceptEncoding)) return;

            acceptEncoding = acceptEncoding.ToUpperInvariant();

            HttpResponseBase response = filterContext.HttpContext.Response;

            if (acceptEncoding.Contains("GZIP"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("DEFLATE"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }

            response.AppendHeader("Connection", "keep-alive");
        }
    }

Application_Start() に登録するので、各コントローラーで行う必要はありません。

GlobalFilters.Filters.Add(new CompressFilter());

RegisterGlobalFilters(GlobalFilters.Filters);

そして、私はこれをconfigに持っています:

<urlCompression doStaticCompression="true" doDynamicCompression="true" />

ビューのヘッダーは正しいですが、css と js のヘッダーはありません。どうすれば修正できますか?

4

1 に答える 1

0

IIS 7圧縮を使用しない場合は、そのCompressFilterは必要ありません。urlCompression設定で十分です。cssがScriptResourceHandlerを介して提供される場合は、その圧縮も設定する必要があります(この例では、キャッシュが有効になっていることに注意してください)。

<configuration>
  ...
  <system.web.extensions>
    <scripting>
      <scriptResourceHandler enableCompression="true" enableCaching="true"/>
    </scripting>
  </system.web.extensions>
  ...
</configuration>

また、ISAプロキシサーバーはデフォルトでAccept-Encodingリクエストヘッダーからgzipを削除するため、ISAはコンテンツをスキャンして悪意のあるデータを探すことができます。おそらく、他のプロキシ/ファイアウォールソフトウェアも同じことを行います。

于 2012-04-08T13:08:06.553 に答える