2009-05-02 7 views
4

現在、ASP.NET MVCのOutputCache属性には大きな打撃があります。サイトの一部をキャッシュする場合は、MVCが依存するASP.NETのパイプラインの制限のために回避策を使用する必要があります。ASP.NET MVCでページ全体のキャッシュを回避する方法

RenderActionで表示される統計モジュールを持つページがある場合、ページのその部分だけをキャッシュしておくことはできないとします。

私の質問は、あなたのエレガントで使いやすいこの制限を回避する方法はありますか?私は個人的にそれらの2つを見つけました。彼らは働いていますが、周囲にアプリを構築するときに間違っているように見えます。

ソリューション1 - サブコントローラ http://mhinze.com/subcontrollers-in-aspnet-mvc/

ソリューション2 - 部分的な要求を別の溶液または多分あなたはこれらのソリューションのいずれかを使用したにも道を持っているのであれば、エレガントな、私は大好きです http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

デザインや使用に関するアイデア。

答えて

4

私はこれを(Html.RenderActionを使用して)オプション2で実行しました。かなり成功しました。私はコントローラ用の異なる基本クラスも作成しました。一つはキャッシュ、もう一つはキャッシュされたアクションを一箇所にまとめたものです。私はこれを頻繁にやっていないので、これらの行動を分離することはそれほど悪くはありません。キャッシングとGZip圧縮フィルタを組み合わせて、私はMVCから非常に驚異的なパフォーマンスを得ることができたと書いています。

1

jQueryを使用して、一部の領域(divなど)をajax経由でロードする方法はありますか。次に、さまざまな領域を完全な要求として、異なる粒度でキャッシュすることができます。

+0

私はそれについて考えていましたが、JavaScriptを無効にしている人に下位レベルのサポートを提供していないのは嫌です。 –

4

ASP.NET OutputCache機能を使用しない方が良い場合もあります。代わりに、オプションのgzip圧縮を使用して、ビジネス/サービス層でCachingを使用します。場合によっては、この組み合わせはフル出力キャッシングよりも高速です。

+0

「サービスレイヤでのキャッシュ」という意味を説明できますか?サービス層から圧縮された結果を返すことを意味しますか? –

+0

私は、あなたのデータ(ASP.NETキャッシュ、NVelocity、Memcachedまたはany)のキャッシュ、および/またはレスポンス圧縮 –

関連する問題