Domanda

Ho un problema davvero strano. Sto usando la cache dell'oggetto per recuperare i risultati più veloci quando si utilizza Spquery.

Il mio codice per ottenere oggetti è il seguente:

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

Quando eseguo questo codice ottengo tutti i risultati che soddisfano le condizioni in query (non importa quante volte che aggiorno la pagina). Tuttavia, se apporto modifiche all'elenco (aggiungi o elimina la voce), la cache dell'oggetto restituisce il set di elementi modificato solo una volta. La prossima volta che aggiornerò la pagina ottengo 0 risultati.

E.G. Se avessi 5 articoli e poi aggiungo 1 nuovo oggetto, ottengo 6 articoli che è il risultato corretto. Ma quando riarrei di nuovo la pagina ottengo 0 risultati. Questo stato persiste fino a quando non ricicliò la cache dell'oggetto della pool di app o della cache dell'oggetto.

La cache dell'oggetto è impostata su 300 MB, sta controllando le modifiche quando la query viene eseguita e il valore di moltiplicatore è impostato su 3.

Qualche idea Cosa potrebbe essere fonte dei miei problemi?

Qualsiasi consiglio è il benvenuto! Grazie.

Modifica:

Ho esaminato ULS e ho trovato queste voci quando vengono restituiti 0 articoli:

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.
.

È stato utile?

Soluzione

"cache miss for Query Web" potrebbe essere la risposta.Potresti guardare il log ULS per la porzione sbagliata.Guarderei il registro ULS per la prima corsa di successo e vedere se non c'è una missione di cache per l'elenco che si traduce in una discarica della cache per l'elenco che stai interrogando.

Potresti essere in grado di rimediare modificando la query dal lato server sul lato client.Se ricordo correttamente le query laterali client tendono a estrarre l'intera lista prima di eseguire la query, quindi penso che potresti ricevere i colpi di cache ogni volta.

Altri suggerimenti

Le missioni della cache sono per lo più probabilmente probabilmente accadere a causa della memoria insufficiente poiché sono tutte memorizzate in RAM.In caso contrario, la causa principale deve fare con la configurazione della cache.Suggerirei di provare le diverse impostazioni specificate per la cache dell'oggetto come cambiare il maxsize direttamente nel Web.config ecc. Nell'articolo sottostante,

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

Assicurarsi inoltre che gli account utente della cache dell'oggetto siano configurati correttamente come menzionato nel seguente articolo,

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

Penso e non sono sicuro che questo sia risalente al profilo della cache Modifica un oggetto Fai sporcare la cache e questo è il motivo per cui la tua prossima richiesta ti sta dando nulla .. perché l'oggetto non è più valido Dai un'occhiata e gioca con le impostazioni del profilo della cache. C'è una coppia per intranet ed extranet o anonimo

Sunchero

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top