Asp.net-mvc-caching
ASP.NET MVC-キャッシュ
この章では、アプリケーションのパフォーマンスを向上させるために、キャッシングなどの最も一般的なASP.NET技術の1つに焦点を当てます。 キャッシュとは、パフォーマンスを向上させるために頻繁に使用されている何かをメモリに保存することを意味します。 出力キャッシュを活用して、ASP.NET MVCアプリケーションのパフォーマンスを劇的に改善する方法を説明します。
ASP.NET MVCには、適用できるOutputCacheフィルター属性があり、これはWebフォームの出力キャッシュと同じ概念です。 出力キャッシュを使用すると、コントローラーアクションによって返されたコンテンツをキャッシュできます。
出力キャッシュを使用すると、基本的に特定のコントローラーの出力をメモリに保存できます。 したがって、そのコントローラーで同じアクションを受信する今後の要求は、キャッシュされた結果から返されます。 これにより、同じコントローラーアクションが呼び出されるたびに同じコンテンツを生成する必要がなくなります。
キャッシュする理由
アプリケーションのパフォーマンスを改善するには、多くの異なるシナリオでキャッシュが必要です。 たとえば、従業員のリストを表示するASP.NET MVCアプリケーションがあるとします。 これで、ユーザーがコントローラーアクションを呼び出すたびにデータベースクエリを実行してこれらのレコードをデータベースから取得すると、インデックスビューが返されます。
したがって、出力キャッシュを利用して、ユーザーが同じコントローラーアクションを呼び出すたびにデータベースクエリを実行することを回避できます。 この場合、ビューはコントローラーアクションから再生成されるのではなく、キャッシュから取得されます。
キャッシュを使用すると、サーバーでの冗長な作業の実行を回避できます。
プロジェクトでのキャッシュの簡単な例を見てみましょう。
ご覧のとおり、EmployeeControllerのインデックスアクションに「OutputCache」属性を追加しました。 この概念を理解するために、このアプリケーションをデバッガーモードで実行し、Indexアクションメソッドにブレークポイントを挿入しましょう。
次のURL http://localhost:63004/employee を指定し、「Enter」を押します。 Indexアクションメソッドでブレークポイントにヒットすることがわかります。
「F5」ボタンを押して続行すると、ビューから従業員のリストが表示され、データベースから取得されます。
60秒以内にブラウザーを再度更新すると、今回はブレークポイントにヒットしないことがわかります。 これは、出力キャッシュを秒単位で使用したためです。 したがって、この結果は60秒間キャッシュされ、ブラウザーを更新すると、キャッシュから結果が取得され、データベースサーバーからコンテンツが読み込まれません。
期間パラメーターに加えて、出力キャッシュで使用できる他の設定オプションもあります。 これらの設定はMVCフレームワークだけでなく、ASP.Net Cachingから継承されます。
出力キャッシュの変更
場合によっては、詳細ページを作成し、詳細リンクをクリックすると選択した従業員の詳細が表示されるなど、さまざまなキャッシュバージョンが必要になる場合があります。
ただし、最初に詳細ビューを作成する必要があります。 このためには、EmployeeControllerからDetailsアクションメソッドを右クリックし、[ビューの追加…]を選択します
デフォルトで詳細名が選択されていることがわかります。 次に、[テンプレート]ドロップダウンから[詳細]を選択し、[モデルクラス]ドロップダウンから[従業員]を選択します。
[追加]をクリックして続行すると、Details.cshtmlが表示されます。
[OutputCache]属性のVaryByParamプロパティを利用できます。 このプロパティを使用すると、フォームパラメーターまたはクエリ文字列パラメーターが異なる場合に、まったく同じコンテンツの異なるキャッシュバージョンを作成できます。 詳細アクションの実装は次のとおりです。
上記のコードをコンパイルして実行すると、URL http://localhost:63004/employee を指定することにより、次の出力が表示されます。
任意のリンクの[詳細]リンクをクリックすると、その特定の従業員の詳細ビューが表示されます。
Details()アクションには、値「Id」を持つVaryByParamプロパティが含まれます。 Idパラメーターの異なる値がコントローラーアクションに渡されると、詳細ビューの異なるキャッシュバージョンが生成されます。
VaryByParamプロパティを使用するとキャッシュが増えることを理解することが重要です。 Idパラメーターの異なるバージョンごとに、詳細ビューの異なるキャッシュバージョンが作成されます。
キャッシュプロファイル
web.configファイルにキャッシュプロファイルを作成できます。 [OutputCache]属性のプロパティを変更することにより、出力キャッシュプロパティを構成する代わりになります。 次のようないくつかの重要な利点があります。
- コントローラーアクションが1つの中央の場所にコンテンツをキャッシュする方法を制御します。
- 1つのキャッシュプロファイルを作成し、そのプロファイルを複数のコントローラーまたはコントローラーアクションに適用します。
- アプリケーションを再コンパイルせずにWeb設定ファイルを変更します。
- 既に実稼働環境にデプロイされているアプリケーションのキャッシュを無効にします。
web.configファイルにキャッシュプロファイルを作成して、キャッシュプロファイルの簡単な例を見てみましょう。 <caching>セクションは、<system.web>セクション内に表示する必要があります。
Cache10Minプロファイルは、次の[OutputCache]属性を使用してコントローラーアクションに適用できます。
このアプリケーションを実行し、次のURLを指定します http://localhost:63004/employee
上記のようにIndex()アクションを呼び出すと、同じ時間が10分間返されます。