Pregunta

Tengo un problema realmente extraño. Estoy usando un caché de objetos para recuperar los resultados más rápidos cuando se usa spquery.

Mi código para obtener artículos es el siguiente:

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

Cuando ejecuto este código obtengo todos los resultados que satisface la condición en la consulta (sin importar cuántas veces actualice la página). Sin embargo, si realizo algún cambio en la lista (agregue o elimine el elemento), el caché de objeto devuelve el conjunto cambiado de elementos solo una vez. La próxima vez que actualice la página, obtengo 0 resultados.

e.g. Si tuviera 5 artículos y luego agrego 1 artículo nuevo, obtengo 6 artículos que es el resultado correcto. Pero cuando vuelva a actualizar la página, obtengo 0 resultados. Este estado persiste hasta que recicle la aplicación de la aplicación o el caché de objetos de descarga.

Mi caché de objeto se establece en 300 MB, está comprobando los cambios cuando se ejecuta la consulta y el valor multiplicador se establece en 3.

¿Alguna idea de lo que podría ser fuente de mis problemas?

¡Se recibe algún consejo! Gracias.

Editar:

Miré en ULS y encontré estas entradas cuando se devuelven 0 artículos:

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.

¿Fue útil?

Solución

"Miss Miss para la tarjeta de consulta" puede ser la respuesta.Puede estar mirando el registro ULS para la parte incorrecta.Miraría el registro ULS para la primera ejecución exitosa y vería si no hay una falta de caché para la lista que resulta en un volcado de caché para la lista que está consultando.

Es posible que pueda remediar cambiando la consulta del lado del servidor al lado del cliente.Si recuerdo que las consultas laterales correctas del cliente tienden a tirar de la lista completa antes de ejecutar la consulta, así que creo que puede obtener hits de caché cada vez.

Otros consejos

Es probable que las fallas en la memoria caché se realicen principalmente debido a la memoria insuficiente, ya que todas se almacenan en RAM.Si no, en su mayoría, la mayoría debe hacer con la configuración de caché.Sugeriría probar las diferentes configuraciones especificadas para el caché de objetos, como cambiar el tamaño máximo directamente en la web.config, etc. en el artículo a continuación,

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

También asegúrese de que las cuentas de usuario de la caché de objeto estén configuradas correctamente como se mencionan en el siguiente artículo,

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

Pienso y no estoy seguro de que esto se realice en el perfil de caché Modificar un artículo Haga que el caché suceda y es por eso que su próxima solicitud no le está dando nada. Porque el objeto ya no es válido Eche un vistazo y juegue con la configuración del perfil de caché. Hay una pareja para Intranet y Extranet o Anonymous

SUNCHERO

Licenciado bajo: CC-BY-SA con atribución
scroll top