1. ホーム
  2. c#

[解決済み] ASP.NETでGZip圧縮を実装するには?

2023-08-09 10:01:55

質問

私は asp.net のページ (CSS と JS ファイルを含む) に GZip 圧縮を実装しようとしています。以下のコードを試しましたが、私の.aspxページしか圧縮されません。 YSlow )

HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;

上記のコードは、私の.aspxページのコード(マークアップ)のみを圧縮しており、外部ファイルとして含まれているCSSやJSファイルは圧縮されていません。 コードを使ってASP.NETでGZip圧縮を実装する方法を教えてください(私はIISサーバー構成にアクセスできない共有ホスティングサーバーにいるため)。また、上記のコードでは、最後の2行を取得できません。なぜ、これらの行が使用され、これらの行の目的は何ですか。説明してください!

どのように解決するのですか?

JS & CSS ファイルの圧縮については、これらのファイルは ASP.NET ランタイムなしで直接レンダリングされるため、実際には IIS レベルで処理する必要があります。

IIS で JSX & CSSX 拡張を aspnet_isapi.dll にマッピングして、ZIP コードを利用することもできますが、IIS の方がより良い仕事をする可能性が高いでしょう。

content-encoding ヘッダーは、レンダリングの前にコンテンツを解凍する必要があることをブラウザに知らせます。 一部のブラウザは、コンテンツの形状に基づいて、いずれにせよこれを把握できるほど賢明ですが、伝えるだけ伝える方がよいでしょう。

Accept-encoding のキャッシュ設定は、text/html のみを要求したブラウザに gzip されたコンテンツのキャッシュ版が送信されないようにするためにあります。