1

それで、コントローラーの単体テストの準備をしているときに、標準のキャッシュユーティリティを調べていて、MVCで直接有害と見なされるHttpRuntime.Cacheにアクセスしているのではないかと考えました。

テスト中にモックできるように、キャッシュのようなインターフェイス(はるかに単純)を実装するプロキシクラスでキャッシュをラップします。しかし、それが新しいフレームワークですでに行われているのではないかと思います。しかし、何も見つかりません。

これが私がそれを行う方法のアイデアです:

public ActionResult DoStuffLol(guid id)
{
  var model = CacheUtil.GetOrCreateAndStore(
                  "DoStuffLolModel",
                  () =>
                  {
                    /* construct model here; time consuming stuff */
                    return model;
                  });
  return View("DoStuffLol", model);
}

では、キャッシュにアクセスする古いパターンは変更されましたか?MVCでアクション結果をキャッシュするためのより良いパターンはありますか?

4

2 に答える 2

1

フレームワークに出力をキャッシュするように指示するために、コントローラー アクションに OutputCache 属性を追加します。この属性の詳細については、ASP.NET Preview 4 に関する ScottGu のブログ投稿を参照してください。

ただし、これを Authorize 属性と組み合わせないでください

于 2008-10-07T17:01:02.337 に答える
0

いいえ、ただしキャッシュは 3.5 で変更されました。3.5 には、asp.net で使用される多くの静的クラスのスタブ化/モック化を容易にするラッパー クラスが含まれています。

http://www.codethinked.com/post/2008/12/04/Using-SystemWebAbstractions-in-Your-WebForms-Apps.aspx

于 2008-12-04T18:18:27.557 に答える