2

いくつかの入力パラメーターを指定して、グラフィックを動的にレンダリングするコントローラー アクションがあります。グラフィックがレンダリングされると少し目立つので、出力キャッシュを使用して再レンダリングを回避します。

非常に頻繁に使用される入力パラメーターの組み合わせは数十あります。これらの組み合わせのいずれかを使用する最初の訪問者が遅延を経験しないように、キャッシュをウォームアップすることをお勧めします。

そのために、次のように Application_Start() からコントローラーを直接呼び出します。

UtilController uc = new UtilController();
uc.GenerateImage(p1, p2, p3);

ブレークポイントを設定することで、コントローラーのアクションが呼び出され、画像が生成されることがわかります。ただし、そのイメージがブラウザーによって最初に (そして最初に) 要求されたときは、再度生成されます。このテストでは、ブラウザーは何もキャッシュしないように構成されており、コントローラー アクションの呼び出しに使用されるパラメーターを注意深く比較しました。

コントローラー アクションが直接呼び出された場合、出力キャッシュは呼び出されませんか? キャッシュを事前にウォームアップするためのより良い方法 (できれば Web プロジェクトに自己完結型の方法) はありますか?

4

1 に答える 1

2

コントローラー アクションが直接呼び出された場合、出力キャッシュは呼び出されませんか?

それをトリガーする HTTP 要求/応答サイクルを経ていないため、呼び出されません。たまたまアクションであるメソッドを直接呼び出しています。

キャッシュを事前にウォームアップするためのより良い方法 (できれば Web プロジェクトに自己完結型の方法) はありますか?

WebClient を使用して HTTP リクエストを特定のアドレスに送信できます。もちろん、キャッシュをサーバーに保存するように構成した場合にのみ機能します。場所をダウンストリームまたはクライアントに設定した場合、それは役に立ちません。

于 2012-08-23T05:53:10.637 に答える