2

asp.net MVC 2 アプリケーション (ビュー エンジンとしての Web フォーム、orm レイヤーとしての linq2SQl) の細かいパフォーマンス チューニングを行っています。ページレンダリングのプロファイリングに mvc mini-profiler を使用しています。私は(現時点では)出力キャッシュを使用していません。

サイトのほぼすべてのページで、少し奇妙な動作に気付きました。

最初にページにアクセスしたとき、レンダリングに約 200 ミリ秒かかり、15ミリ秒の db クエリ時間 (ストアド プロシージャの呼び出し) があります。

同じページへの後続のヒットはすべて約 20 ミリ秒でレンダリングされクエリは約 15 ミリ秒のままです。したがって、この場合、ページは約6msでレンダリングされると想定しています。

5 分間ページにアクセスせず (他に要求がない場合)、同じページにアクセスしようとすると、後続のすべての呼び出しで18-20msの順序でレンダリングするのに200msかかります。また、IIS アプリ プールのリサイクルが行われていないことも確認しました。

MVC フレームワークのどこかに、数分後に無効になり、微調整が必​​要なキャッシュがあると思われます。

何か案は?

4

1 に答える 1

2

Web フォーム ビューの場所のデフォルトのキャッシュは 15 分程度です。これを次のように増やすことができます:

foreach (var viewEngine in ViewEngines.Engines.OfType<VirtualPathProviderViewEngine>())
{
    viewEngine.ViewLocationCache = new DefaultViewLocationCache(TimeSpan.FromHours(24));
}

詳細については、http ://weblogs.asp.net/rashid/archive/2009/04/23/asp-net-mvc-view-location-and-performance-issue.aspx をご覧ください。

于 2011-09-14T19:17:08.653 に答える