2010-12-08 5 views
2

J'ai utilisé la suite pour mettre en cache ma page ASP.NET.Mise en cache des requêtes AJAX

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); 

Le problème est quand j'envoie AJAX (XMLHttpRequest) demande d'autres pages à cette page, cette réponse ne soit pas mis en cache sur un navigateur, mais IE. (Sur IE, il est mis en cache même si je ne spécifie pas). Comment puis-je le mettre en cache? Une solution côté client? Merci à l'avance ...

+0

question similaire: http: //stackoverflow.com/questions/650440/cache-ajax-requests –

+0

Vous le savez peut-être déjà, mais il est important de s'assurer que votre demande est un GET et non un POST - la plupart des navigateurs seront ne pas mettre en cache les requêtes POST, quels que soient les en-têtes. – Justin

+0

ya le mien est OBTENIR seulement – mihsathe

Répondre

1

Liens: Référez-

Cache AJAX requests

http://developer.yahoo.net/blog/archives/2007/05/high_performanc_2.html 
http://developer.yahoo.net/blog/archives/2007/07/high_performanc_11.html 

cache Expirant:

header("Cache-Control: private, max-age=$seconds"); 
    header("Expires: ".gmdate('r', time()+$seconds)); 

Je HPPE il vous aidera.

+0

Mais croyez-moi ... IE met en cache même si vous actualisez ... Je l'ai testé avec le contenu changé ... la seule façon de traverser dans ce cas est de fermer le navigateur et de recommencer .. – mihsathe

+0

ou joindre un nombre aléatoire/date bien sûr ... – mihsathe

+0

Utiliser les en-têtes pour expirer le cache –

-1

Vous pouvez ajouter une chaîne de requête dynamique à la fin de l'URL pour obtenir les données uniques de la requête ajax à chaque fois.

de sorte que votre URL demande ajax pourrait ressembler à ceci:

var myUrl = "http://mysite.com/hello.aspx?timestamp=" + new Date().getTime(); 
+0

-1) parce que ce n'était pas le problème – Singleton

+0

Je veux appliquer le cache pour ne pas l'éviter ... – mihsathe

0

Cela pourrait ne pas répondre à votre question .. mais je pense que vous devriez faire la mise en cache côté serveur au lieu de la mise en cache côté client pour les demandes ajax. Si votre problème est la performance sur les requêtes ajax répétées .. la mise en cache côté client a beaucoup de paramètres basés sur l'utilisateur et les types de navigateur qui n'est pas un endroit idéal pour dépendre de la mise en cache.

Le cache côté client, idéalement, est à définir par l'utilisateur pour augmenter ses performances de navigation indépendamment des sites Web/applications Web.

+0

Mais comment le faire? c'est ce que ma question. Je suis à la recherche d'une solution côté client parce que le côté serveur standard ne fonctionnait pas pour moi. – mihsathe

+0

Pour la mise en cache côté serveur: Si vous utilisez IIS 6 + pour le serveur Web, vous devriez pouvoir définir 'Mise en cache des sorties' au niveau de la configuration iis pour votre application Web. .. approche la plus simple sans aucun changement de code. –

Questions connexes