7

分散キャッシングソリューションとしてASP.NETMVC3とAppFabricを使用して、非常に大規模なサイトビルドを実行しています。AppFabricクラスターを使用するためのカスタムOutputCacheAdapterを実装しました。

アクションが@OutputCacheAttributeで装飾されていない場合でも、ASP.NETがすべてのアクションに対してOutputCacheProvider.Get()メソッドを呼び出すことがわかります。

デフォルトのoutputcacheproviderを使用する場合、これはそれほど問題にはなりませんが、別のマシンにあるoutputcacheproviderを実行している場合は問題になります。

4

2 に答える 2

4

ページのキャッシュされたコピーについて、出力キャッシュが最初にチェックされるのは仕様によるものです。キャッシュされたコピーがある場合は、それが返され、それ以上何も実行されません。特に、コントローラーおよびコントローラーアクションは、派生、検査、または実行されません。これは、ページがキャッシュされていない場合にのみ発生します。

ページがキャッシュされる可能性があるかどうかをすばやく判断できるように、キャッシュプロバイダーを変更する必要があります。キャッシュ可能なページである場合にのみ、分散キャッシュを確認する必要があります。OutputCacheAttributeこのチェックは、リクエスト処理のこの部分では使用できないため、に基づくことはできません。代わりに、URL、Cookie、およびその他のHTMLヘッダー情報を使用してクイックチェックを行う必要があります。

于 2012-04-16T13:58:58.810 に答える
1

出力キャッシュキーのプレフィックスを定義できるドーナツキャッシュoutputcache属性を使用できます。したがって、カスタムプロバイダーでは、キャッシュキーが独自のプレフィックスで始まる場合は、キャッシュを取得/設定するだけです。

于 2017-04-14T04:15:26.253 に答える