Question

J'ai un problème vraiment étrange. J'utilise le cache d'objet pour récupérer plus rapidement les résultats lors de l'utilisation de SpQuery.

Mon code pour obtenir des articles est comme suit:

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

Quand j'exécute ce code, je reçois tous les résultats satisfaisant la condition dans la requête (peu importe combien de fois je rafraîchis la page). Toutefois, si je apporte des modifications à la liste (ajouter ou supprimer un élément), le cache d'objet renvoie le jeu modifié des éléments une seule fois. La prochaine fois que je rafraîchis la page I obtenez 0 résultats.

E.g. Si j'avais 5 articles et j'ajoute 1 nouvel article, j'obtiens 6 articles qui sont un résultat correct. Mais quand je rafraîchis la page à nouveau, j'ai obtenu 0 résultats. Cet état persiste jusqu'à ce que je recycle le pool d'applications ou que je rince cache d'objet.

mon cache d'objet est défini sur 300 Mo, il vérifie les modifications lorsque la requête est exécutée et la valeur multiplicateur est définie sur 3.

Des idées Qu'est-ce qui pourrait être source de mes problèmes?

Tout conseil est accueilli! Merci.

EDIT:

J'ai regardé dans ULS et j'ai trouvé ces entrées lorsque 0 articles sont retournés:

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.

Était-ce utile?

La solution

"Cache Mlle pour la requête Web" peut être la réponse.Vous recherchez peut-être le journal ULS pour la mauvaise partie.Je consulterais le journal ULS pour la première exécution réussie et voyez s'il n'y a pas de cache Mlle pour la liste qui donne une vidange de cache pour la liste que vous interrogez.

Vous pourrez peut-être remédier en modifiant la requête du côté serveur au côté du client.Si je me souviens bien que les requêtes du côté client ont tendance à tirer la liste complète avant d'exécuter la requête, alors je pense que vous pouvez obtenir des coups de cache à chaque fois.

Autres conseils

Les misses de cache sont principalement susceptibles de se produire à cause de la mémoire insuffisante car elles sont toutes stockées en RAM.Sinon, la plupart du temps, la configuration du cache doit être utilisée.Je suggère d'essayer les différents paramètres spécifiés pour le cache d'objet, comme modifiant le maxsize directement dans le Web.config, etc. dans l'article ci-dessous,

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

Assurez-vous également que les comptes d'utilisateurs de cache d'objet sont configurés correctement comme mentionné dans l'article ci-dessous,

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

Je pense et je ne suis pas sûr que cela soit récité au profil de cache Modifier un article rend le cache sale et c'est pourquoi votre demande suivante ne vous donne rien. Parce que l'objet n'est plus valide Jetez un coup d'œil avec les paramètres de profil de cache .. Il y a un couple pour intranet et extranet ou anonyme

sunchero

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top