Estoy empezando a buscar en el almacenamiento en caché para mejorar el rendimiento y tengo una pregunta sobre el almacenamiento en caché de una llamada AJAX.¿Cómo funciona el almacenamiento en caché ASP.NET MVC para una solicitud AJAX?
Tengo una acción que se utiliza para consultar Twitter y luego devolver los resultados. En el momento en que un usuario presiona un botón, carga un gif giratorio mientras se dirige a la acción para realizar la consulta y luego devolver una vista parcial. jQuery luego actualiza un div con la respuesta HTML de la vista. Normalmente esto lleva alrededor de 5 segundos. Luego tienen un botón más que se activa para obtener más resultados.
¿Qué pasará si coloco CachingAttribute sobre esta acción? Sé que puedo intentarlo, pero solo quiero que se explique el lado técnico de las cosas.
Gracias
Aquí está mi Javascript:
$('#blogEntryList #moreLink').live("click", function() {
$('#morespan').toggle();
$('#loader').toggle();
$.get($(this).attr("href"), function(response) {
$('#blogEntryList ol').append($("ol", response).html());
$('#blogEntryList #moreLink').replaceWith($("#moreLink", response));
$('#loader').hide();
$('#morespan').show();
});
return false;
});
Aquí está mi acción modificación:
[OutputCache(
Location = OutputCacheLocation.Server,
Duration = 100,
VaryByParam = "")]
public ActionResult BlogPosts(int? entryCount)
{
if (!entryCount.HasValue)
entryCount = defaultEntryCount;
int page = entryCount.Value/defaultEntryCount;
IEnumerable<BlogData> pagedEntries = GetLatestEntries(page, defaultEntryCount);
if (entryCount < totalItems)
AddMoreUrlToViewData(entryCount.Value);
return View("BlogEntries", pagedEntries);
}
Entonces, cuando el usuario haga clic para obtener más datos en mi situación, devolverá los primeros 10 resultados una y otra vez hasta que se agote la caché. En ese caso, probablemente no quiera utilizar un caché porque cuando hacen clic para obtener más datos no pueden almacenarse en caché – Jon
@Jon, puede usar la propiedad 'VaryByParam' para especificar un nombre de parámetro de acción como, por ejemplo, el número de página. –
¿Puede VaryByParam contener un CSV de valores, por ejemplo,/si tiene 5 números de página? – Jon