asp.net - ロック - global asax 変数



キャッシング戦略、出力キャッシュとデータキャッシュ、またはその両方 (2)

Googleでは、大規模(1日に3百万回の訪問)のWebサイト(ニュースポータル)でAPIと出力のキャッシュを行っています。 このサイトは主に匿名ユーザーによって使用されていますが、私たちは認証されたユーザーしかいません。サイトのパーソナライズされた部分のために完全なサイトをキャッシュしています。

だから、私のアドバイスはAPIキャッシュでできるすべてをキャッシュするので、出力キャッシュの再構築はさらに高速になります。

もちろん、パフォーマンスカウンタのキャッシュレシオ値には細心の注意を払ってください。 キャッシュされたヒットの数が> 95%になるはずです。

注目すべきもう一つはキャッシュの無効化です。関連するコンテンツがたくさんある場合、これは大きな問題です。 たとえば、音楽をキャッシュし、数百ページに1つのアルバムや曲に関する情報を表示してキャッシュすることができます。 その曲の内容が変わった場合は、これらのページをすべて無効にしなければならず、問題が発生する可能性があります。

要するに、キャッシュはASP.NETの最高の機能の1つであり、すばやく実行され、その機能に頼ることができます。

https://src-bin.com

私はASP.NET MVCプロジェクトに取り組んでおり、私は自分のキャッシュ戦略を検討し始めたいと思っています。 私はフレームワークを可能な限りオープンにしてキャッシングに使用しようとしました。

Scott Hanselmanのポッドキャストで聞いたことから、StackOverflow.comはページ出力のキャッシュを使用してその内容を圧縮し、RAMに保存します。 これは、これがユーザー全体のキャッシュには素晴らしいと思われますが、パーソナライズされたページのようなものでは、ユーザーごとにバージョンをキャッシュしなければならず、非常に迅速に制御から外れる可能性があります。

それで、キャッシュ戦略のために。 どちらを使用すべきか、出力キャッシュ、データキャッシュ、または結合? 私の最初の考えは両方ですが、それは少し複雑になるかもしれないように聞こえるキャッシュの依存関係までです。


Answer #1

過度に攻撃的なキャッシュに注意してください。 キャッシングはパフォーマンスを助けるためのツールですが、誤って使用するとパフォーマンスが悪化する可能性があります。

私はあなたのプロジェクトについての詳細を知らなくても、出力キャッシュやデータキャッシングがうまくいくかどうかは答えられません。 私は、あるものを別のものに重ねて使用する場合の例をいくつか提供するのを助けることができます。

多くの異なるビューで頻繁に使用する特定のデータセットがある場合は、データキャッシュを使用する方がよいでしょう。 あなたのデータを取得する操作が、データレンダリングに比べて非常に一般的で高価だった場合は、これを使用します。 同じデータを使用するビューが複数ある場合は、データの取得時間を節約できます。

非常に特定のデータセットを使用したビューがあり、ビューのレンダリングが複雑で、このビューが非常に頻繁に要求された場合(たとえば、スタックオーバーフローのホームページ)、出力キャッシュによって多くのメリットがあります。

したがって、結局、あなたのニーズに本当に依存し、誤ってキャッシュを使用することに注意してください。





outputcache