ASP.Net Coreで応答圧縮を使用する方法







ASP.Net CoreのResponse Compressionミドルウェアを活用して、帯域幅要件を削減し、アプリケーションの応答性を向上させます。



ASP.Net Coreは、高性能なWebアプリケーションを構築するためのオープンなクロスプラットフォームのモジュール式環境です。 ASP.Net Coreアプリケーションは、Windows、Linux、さらにはMacOSでも実行できます。 完全に最新のWebインフラストラクチャであるASP.Net Coreには、応答の圧縮のサポートが組み込まれているため、応答のサイズを縮小し、応答時間を短縮できます。 この記事では、応答圧縮の仕組みと、中間処理コンポーネントを使用してASP.Net Coreで応答を圧縮する方法について説明します。



圧縮は、ネットワークトラフィックを削減し、Webサーバーリソースとクライアント間のデータ交換の速度を上げる簡単な方法です。 GzipおよびDeflateは、圧縮を実現するために使用できる一般的なアルゴリズムであり、最新のWebブラウザーのほとんどは応答圧縮をサポートしています。 応答の圧縮のための中間処理ASP.Net CoreはデフォルトでGzip圧縮を使用します。



ASP.Net Coreのアプリケーションパイプラインには、順番に呼び出されるいくつかのリクエストデリゲートが含まれていることに注意してください。 これを使用して、クエリ圧縮を実装します。 中間処理パイプラインは、 Startup.cs



ファイルのConfigure



メソッドを使用してConfigure



れます。 ここで、ASP.Net Coreパイプラインを組み合わせることができます。 これについてさらに検討します。



ASP.Net Coreアプリケーションの作成



Visual Studio Community Edition 2017を使用しており、.Net Coreが既にインストールされている場合、次の手順に従ってVisual Studioで最初のASP.Net Coreアプリケーションを作成します。



  1. Visual Studio IDEで、[ファイル]-> [新規]-> [プロジェクト]をクリックします。
  2. テンプレートのリストから「ASP.Net Core Web Application(.Net Core)」を選択します。
  3. Webアプリケーションを選択します。
  4. アプリケーションの名前を入力し、[OK]をクリックします。
  5. [新しいASP.NET Core Webアプリケーション]ウィンドウで、[。Net CoreおよびASP.Net Core 2.0]を選択します。
  6. 次に、「Web API」テンプレートを選択し、「Dockerサポートを有効にする」のチェックを外して、「OK」をクリックします。


ASP.Net Coreプロジェクトを作成したので、NuGetパッケージマネージャーを使用してResponseCompression



パッケージをインストールし、新しく作成されたASP.Net CoreプロジェクトでGzip圧縮を有効にします。



 > Install-Package Microsoft.AspNetCore.ResponseCompression -Version 2.0.1
      
      





この記事の執筆時点では、このパッケージの最新の安定バージョンは2.0.1です。



ASP.Net Coreでの応答圧縮の構成



ResponseCompression



パッケージをインストールしたら、次のステップはそれを構成することです。 これを行うには、 Startup.cs



ファイルを編集し、 ConfigureServices



およびConfigure



メソッドを使用して圧縮を有効にする必要があります。 ConfigureServices



メソッドを使用してサービスをコンテナに追加し、 Configure



メソッドを使用してHTTP要求パイプラインを構成します。 両方のメソッドが実行時に自動的に実行されることに注意してください。



Startup.cs



ファイルのConfigureServices



メソッドに応答圧縮を追加する方法は次のStartup.cs



です。



 public void ConfigureServices(IServiceCollection services) { services.AddResponseCompression(); services.AddMvc(); }
      
      





次のコードは、 Configure



メソッドを示しています。 ここでは、別の処理の前にパイプラインに圧縮のための中間処理を追加しました。



 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseResponseCompression(); app.UseMvc(); }
      
      





ASP.Net Coreでのコントローラーの展開



応答圧縮がプロジェクトにインストールされて構成されたので、応答圧縮を実証するためのコントローラーを実装しましょう。 これを行うには、プロジェクトのControllersフォルダーを選択し、「追加->コントローラー」をクリックします。 「Add Scaffold」ウィンドウに表示されるテンプレートのリストから「API Controller-Empty」テンプレートを選択し、プロンプトが表示されたらコントローラーの名前を入力します。 次に、デフォルトコードを次のコードに置き換えます。



 [Produces(“application/json”)] [Route(“api/Default”)] public class DefaultController : Controller { // GET: api/Default [HttpGet] public List<Message> Get() { List<Message> lst = new List<Message>(); for(int index=0; index <100; index++) { Message message = new Message(); message.Text = “This is a text message.”; lst.Add(message); } return lst; } }
      
      





Message



クラスには、1つの文字列プロパティのみが含まれます。



 public class Message { public string Text { get; set; } }
      
      





このメソッドを実行すると、圧縮された応答のサイズが0.091 KBであることがわかります。 圧縮が無効な場合、応答サイズは3.419 KBでした。 応答の圧縮を無効にするには、Startup.csファイル内の対応する行にコメントするだけです。



ConfigureServices



メソッドで:



//services.AddResponseCompression();







Configure



メソッドで:



//app.UseResponseCompression();







応答圧縮が機能するためには、クライアントはAccept-Encoding



ヘッダーをリクエストと共に送信することにより、サーバーの機能について通知する必要があります。 サーバーは、このヘッダーを圧縮された応答に含めて、応答が圧縮されたことをクライアントに通知する必要があります。



ASP.Net Coreの応答圧縮は柔軟性があり、構成が簡単で使いやすいですが、IIS圧縮よりも比較的遅いことに注意してください。 ASP.Net Coreの応答圧縮の詳細については、 Microsoft ASP.NET Coreのドキュメントを参照してください。



All Articles