J'ai une simple preuve de concept qui semble gérer la mise en cache bizarrement. Voici la vue:Mise au point de la mise en cache AJAX dans ASP.NET MVC
<script>
$('#clickToLoad').click(function() {
$.ajax({
url: "<%=ResolveUrl("~/Home/AjaxCacheTest") %>?"
, dataType: 'json'
,ifModified: true
,cache: true
,success: function(sourceData) {
}
});
});
</script>
Ceci est lié à une action dans le contrôleur:
[OutputCache(VaryByParam = "none", Duration = 3000)]
public ContentResult AjaxCacheTest()
{
return Content("0", "application/json");
}
Je voudrais obtenir un résultat avec la mise en cache, cependant, il semble que AjaxCacheTest ne cache pas à moins que Je le demande tout seul (c'est-à-dire, dans une fenêtre de navigateur, au lieu d'AJAX).
La définition du cache: true n'aide pas. Définir ifModified: true provoque la mise en cache, mais n'appelle pas la fonction de succès, donc je ne peux pas utiliser les résultats.
Existe-t-il des options qui autorisent la mise en cache et appellent toujours le rappel de réponse?
MISE À JOUR: Merci d'avoir oublié d'ajouter ces éléments. Je teste avec firebug et de déterminer comment la mise en cache est gérée par une combinaison de regarder le code de réponse (200 OK vs 302) et le temps de réponse pour la demande. Tout cela est sur le serveur intégré de Visual Studio (Cassini?).
Avec quoi testez-vous? IIS? Cassini? Êtes-vous en mode débogage (je veux dire le paramètre dans web.config)? Avez-vous vérifié les en-têtes reqeust et response via un outil comme FireBug ou quelque chose de similaire? S'il vous plaît, ajoutez les réponses à la question. –