オブジェクトキャッシュが結果を返さない
-
10-12-2019 - |
質問
私は本当に奇妙な問題を抱えています。 SPQueryを使用するときは、オブジェクトキャッシュを使用して結果を高速にしています。
アイテムを取得するための私のコードは次のとおりです。
PortalSiteMapProvider ps = PortalSiteMapProvider.CurrentNavSiteMapProviderNoEncode;
var items = ps.GetCachedListItemsByQuery(((PortalSiteMapNode)ps.CurrentNode).WebNode, "mylistname", myQuery, site.RootWeb);
.
このコードを実行すると、クエリ内の条件を満たすすべての結果が得られます(何度も更新されていなくても)。ただし、リスト(項目の追加または削除)を変更した場合、オブジェクトキャッシュはアイテムの変更されたセットを1回だけ返します。次回はページを更新します。
e.g。 5つのアイテムがあれば、1つの新しいアイテムを追加すると、正しい結果である6項目が得られます。しかし、もう一度更新すると0の結果が得られます。この状態は、アプリプールをリサイクルするか、オブジェクトキャッシュをフラッシュするまで持続します。
マイオブジェクトキャッシュは300MBに設定されているため、クエリが実行され、乗数値が3に設定されている場合の変更のチェックです。
私の問題の発生源かもしれないものは何ですか?
あらゆるアドバイスは歓迎されています!ありがとう。
編集:
ULSを検索し、0項目が返されるとこのエントリを見つけました。
Cache miss for query Web (nor all entries not found) "query .... "
Fetching 4294967295 items.
Fetching super user items.
Fetching SuperReader items.
Merging super user and super reader items.
Cache Hit for query Web "query ... "
Creating result set.
Adding super user IDs.
Adding Super Reader IDs.
Nothing from SuperReaders.
. 解決
「クエリWebのキャッシュミス」が答えかもしれません。あなたは間違った部分のためのULSログを見ているかもしれません。最初に成功した実行のためのULSログを調べて、リストのキャッシュミスが発生しているかどうかを確認します。
サーバー側からクライアント側へのクエリを変更することで解決できる可能性があります。クエリを実行する前にクライアント側のクエリを正しくリミュールする傾向があるので、リスト全体をプルする傾向があるので、キャッシュが毎回ヒットすることがあります。
他のヒント
キャッシュミスは、すべてのメモリがRAMに格納されているため、ほとんど発生する可能性があります。そうでなければ、ほとんどの原因はキャッシュ構成と一緒に行わなければなりません。以下の記事で、web.configなどのMaxSizeを直接変更するように、オブジェクトキャッシュに指定されたさまざまな設定を試すことをお勧めします。
http://technet.microsoft.com/ en-us/library/cc770229(v=オフィス14).aspx
は、オブジェクトキャッシュのユーザアカウントが以下の記事で説明されているように正しく構成されていることを確認してください。
> http://technet.microsoft.com/ en-us/library/ff758656(v=オフィス14).aspx
これがキャッシュプロファイルに関連していると思います アイテムを変更すると、キャッシュを汚し、なぜあなたの次の要求が何も与えている理由を作成します。オブジェクトは無効になったためです。 外観を選択してキャッシュプロファイル設定で再生します..イントラネットとエクストラネットまたは匿名のカップルがあります。
Sunchero