2012-03-02 21 views
1

特定の子アクションにキャッシュを追加したいので、1ページの部分を個別にキャッシュすることができます。MVC:OutputCacheと極端に遅いRenderPartial

AJAXとRenderAction(またはその他の埋め込み方法)の両方からアクセスできるようにするには、同じコントローラメソッドが必要です。

RenderActionを使用するようにコードを変更しましたが、最初の負荷が非常に遅い場合、各Html.RenderActionがページローディング時間に約1秒追加することが判明しました。後続の負荷の成果を楽しむのは難しいです。

私はRenderAction遅れを回避し、まだ私ができる単一のメソッドをキャッシュし、持っていることができるようにするための最善の戦略何、だから... ...離れRenderActionから滞在する専門家の意見、SOにここ

を答えを見てきましたHTMLとAJAXの両方からの呼び出し? (そしてこの場合のキャッシュ無効化の扱い方は?)

答えて

1

ここでajaxは何をしていますか? ajaxとViewResultからJSonResultを呼び出すと、通常の呼び出しで返されますか?

RenderActionをかみそりビューで使用してください。かみそりのエンジンはより速いです。 結果がキャッシュされると、レンダリングは非常に高速です(x1000)。

キャッシングに[OutputCache]属性を使用していますか?もしそうなら、自分でキャッシュを無効にすることはできません(または私はそれについてはわかりません)。

また、メモリ内のキャッシュを素早く乗算するVaryByParamパラメータでOutputCacheを使用していることがあります。

+0

はい、場合によっては 'JsonResult'と時には' View'です。私はRazorエンジンを使用しています。キャッシュされた時間は素晴らしいですが、最初の読み込みは非常に遅いです。はい、VaryByParam(多くのパラメータを持つOutputCacheを使用します.. EDIT:6) – Madd0g

+0

キャッシュはあまりにも多くのメモリを使用するので、あまりにも多くのパラメータを持つべきではありません。最初にキャッシュされたアイテムをリサイクルし、ページの速度を落とします。キャッシュメモリ使用量= viewText^paramValuesCount。 paramsCount = 6、paramValuesCount = 1000のメモリが使用された場合= 10K^6000 =オーバーフロー)、キャッシュがキャッシュされるとすぐにアイテムをリサイクルします。 – Softlion

+0

私は 'RenderPartial'の性能についてもっと心配していますが、質問のキャッシュ部分は概念的なものです。出力キャッシュを使用する際のDRY方法 – Madd0g

関連する問題