2009-08-03 8 views
9

キャッシュに関する質問があります。私は典型的なn層のASP.NET Webアプリケーションを持っています。私はカスタムキャッシュラッパー(ラッパーASP.NETキャッシュオブジェクト)を作ったので、データのキャッシュのベストプラクティスを知りたいと思います。私は自分のビジネス層でキャッシュを使用したくない(そこにSystem.Web dllへの参照を追加したくない)。 DALと同じケース。だから、残された唯一のオプションは次のとおりです。ASP.NETアプリケーションでのキャッシュに関するベストプラクティス

  1. キャッシュUI層
  2. のすべてUIとBLの間にキャッシュ層を作成します(それがどのように実現可能である知らない?)

私も話を聞きました今後のベロシティキャッシングのフレームワークがありますが、それは過剰なものになるかもしれないと思います(私のアプリはウェブファーム/クラスタを必要としないため)。

私のアプローチでは間違っているかもしれないので、私はウェブプロジェクトでデータを効率的にキャッシュする方法に関する提案や代替アプローチを歓迎します。

答えて

10

UIとBLLの間のレイヤーはサービスレイヤーになります。これはキャッシュに適しています。要約キャッシュマネージャ(example on my blog)を使用して、必要なときにプロバイダ(ASP.NETキャッシュ、Velocity、memcachedなど)をスワップアウトできます。

+0

私はあなたのブログの例、インターフェイスの優れた使用が好きです。 – Rutger

+0

同じことをして、実際にASP.Netキャッシュからmemcacheへの移行を行っています。どのようにASP.Netのキャッシュ層がネイティブにプラガブルでないかは、私にとって謎です。 – jro

+0

これはASP.NET 4になります –

1

キャッシュされたデータの目的が何であるかを検討する価値があります。最終的にUIレイヤーに静的なHTMLを生成する場合、これらの部分をユーザーコントロールにラップし、@OutputCacheというディレクティブを追加するのが最も効率的な方法です(少なくともWebフォームを使用する場合)。これを忘れるのは簡単です。時には、フレームワークのキャッシングなどでうんざりしているときもあります。もちろん、これは多くの場合、これが適切でないか、ベストプラクティスではないことに気づきます。

+0

私は基本的にDBからのデータをキャッシュしたいまたは私のビジネスオブジェクト/コレクションを短いキャッシュに入れて)。 – Raghav

関連する問題