Вопрос

У меня действительно странная проблема. Я использую кэш объекта для быстрой извлечения результатов при использовании Ssquery.

Мой код, чтобы получить элементы следующим образом:

PortalSiteMapProvider ps = PortalSiteMapProvider.CurrentNavSiteMapProviderNoEncode;
var items = ps.GetCachedListItemsByQuery(((PortalSiteMapNode)ps.CurrentNode).WebNode, "mylistname", myQuery, site.RootWeb);
.

Когда я запускаю этот код, я получаю все результаты, которые удовлетворяют условию в запросе (независимо от того, сколько раз я обновляю страницу). Однако, если я внесу в список (добавить или удалить элемент), кэш объекта возвращает измененный набор элементов только один раз. В следующий раз, когда я обновляю страницу, я получаю 0 результатов.

e.g. Если бы у меня было 5 предметов, а затем добавляю 1 новый элемент, я получаю 6 элементов, которые являются правильным результатом. Но когда я снова обновляю страницу, я получаю 0 результатов. Это состояние сохраняется до тех пор, пока я не перерабатываю пул приложений или кэш промывания объекта.

Мой кэш объекта устанавливается на 300 МБ, он проверяет изменения, когда запрос выполняется, и значение множителя установлено значение 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.
.

Это было полезно?

Решение

"Кэш-мисс для веб-сайта" может быть ответом.Вы можете смотреть в журнал ULS для неправильной части.Я бы посмотрел на журнал ULS для первого успешного запуска и посмотреть, не пропускается, не пропускается в списке, что приводит к свалкам кэша для списка, который вы запрашиваете.

Возможно, вы сможете исправить, изменив запрос на стороне сервера на стороне клиента.Если я помню правильно правильно наборы клиента, как правило, вытащите весь список перед запуском запроса, поэтому, я думаю, вы можете получить кэш-хит каждый раз.

Другие советы

Промахи

кэш в основном могут произойти из-за недостатка памяти, поскольку все они хранятся в оперативной памяти.Если нет, то в основном причина должна сделать с конфигурацией кеша.Я бы предложил попробовать различные настройки, указанные для кэша объекта, как изменение Maxsize непосредственно в Web.config и т. Д. В статье ниже,

http://technet.microsoft.com/en-us/library/cc770229 (v=Office.14).aspx

Также убедитесь, что учетные записи пользователей кэша объекта настроены правильно, как упоминаются в следующей статье,

http://technet.microsoft.com/en-us/library/ff758656(v=Office.14).aspx

Я думаю, и не уверен, что это вернутся в профиль кэша Изменить элемент сделать кэш грязным и вот почему ваш следующий запрос ничего не дает вам .. Потому что объект больше не действителен Взгляните и играйте с параметрами профиля кэша .. Есть пара для интрасети и экстранет или анонимной

Sunchero

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top