4

画像を動的に生成する ASP.NET MVC アクションがいくつかあります (ただし、それは ASPX ページでもあります)。

[OutputCache] を使用してこれらの画像をキャッシュしています。ASP.NET がイメージをメモリにキャッシュし、多くのリソースを消費することを心配する必要があるかどうか疑問に思っています。これらは、数十個の商品しか入っていないショッピング カートのさまざまなサイズの商品画像です。

OutputCache はディスクを使用しますか、それともメモリ内のみを使用しますか? それはどれほど知的ですか?それとも、イメージを自分でディスクに保存して、独自のキャッシュ システムを実装する必要がありますか (実際には現在の実装です)。

4

1 に答える 1

3

すべての目的と目的で、出力キャッシュは完全にメモリ内にあると思います。つまり、アプリプールをリサイクルする場合は、画像を再度生成する必要があります。

過去に同様のことをしなければならなかったのですが、実際には、主にHTTPキャッシュを使用し、フォールバックとしてファイルシステムを使用する2層システムを実装しました。何かが存在しない場合は、イメージを生成してディスクに保存し、キャッシュに入れました。そうすれば、キャッシュからプッシュされたり、アプリプールがリサイクルされたりした場合に、ディスクからロードするだけで済みます(同じことを行ったようです)。

「メモリが多すぎる」限り、[OutputCache]の代わりにHttpContext.Cacheを明示的に使用すると、キャッシュ内のアイテムの優先度を制御できます。次に、アプリプールの設定を微調整して、全体として使用するメモリの量を制御できますが、それ以外にやるべきことがたくさんあるかどうかはわかりません。いくつかの画像*12の製品は、私には多くのメモリを消費するようには思えません。

アプリケーションについて他に何も知らなくても、outputcacheを使用するだけでうまくいくように思えます。ただし、より堅牢でスケーラブルなものが必要な場合は、説明した2層システムを使用します。ただし、すでに実装して機能している場合は、「壊れていない場合は...」

于 2009-01-28T22:31:43.543 に答える