属性[OutputCache(Duration=XXX)]
(およびドーナツ バリアント[DonutOutputCache(Duration=XXX)]
) を使用しています。
ただし、( ASP.NET (MVC) Outputcache および同時要求で確認) これはスレッド セーフではないことに気付きました: キャッシュが再生成された場合、コントローラー メソッドが十分に遅い場合 (通常はそうです。これがキャッシュする理由です) ^^)、複数の「同一の」リクエストは、1 つのリクエストのみを処理して他のリクエストをブロックし、キャッシュから提供するのではなく、アクションに入って操作を実行できます。
OutputCache
ブロック/スレッドセーフ属性を簡単に作成する方法はありますか? DonutOutputCache
?に対する同じ質問 いいね[BlockingOutputCache(SameParameters)]
と[BlockingDonutOutputCache(SameParameters)]
注: キャッシュされたアクションは通常のアクションであり、 を返しますView(model)
。重い作業はアクションとビューで実行されます (ビューは @Model.GetPrice() のような非常に単純なことを実行できますが、これはバックエンドでの重い作業に変換されます)。
ありがとう!
編集: 別の方法は[BlockingAction(BlockingParameters)]
、キャッシュから提供されない場合に、このアクションへの後続のリクエストをブロックする属性を作成することです。