Maison >interface Web >js tutoriel >Solution au problème de mise en cache IE dans l'appel ajax
Cet article présente principalement la solution au problème du cache IE dans les appels ajax. Il analyse en détail les principes et les solutions spécifiques du mécanisme de cache IE dans les appels ajax. Il a une certaine valeur de référence. 🎜>
L'exemple de cet article analyse la solution au problème de cache IE dans les appels ajax. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants : Problèmes découverts lors de l'appel de requête ajax : La requête en arrière-plan est un simple fichier .aspx, et cette page n'a pas pris en compte l'impact de la mise en cache. ajax pour déboguer, j'ai trouvé que parfois les résultats sont renvoyés directement sans exécuter le code en arrière-plan, donc cela est probablement affecté par le cache du navigateur. Après une recherche en ligne, il s'est avéré qu'il s'agissait d'un problème de mise en cache : "Dans IE, si l'URL soumise par XMLHttpRequest est la même que l'historique, le cache est utilisé et n'est pas du tout soumis au serveur. Par conséquent, les données nouvellement soumises ou les nouvelles données ne peuvent pas être obtenues. Données ».
Les solutions sont à peu près les suivantes :1. Améliorer uniquement le côté serveur
(1) Le fond est un simple fichier .aspx, directement Ajoutez simplement<%@ OutPutCache Location="None"%>. (2) Mais si le fond est un fichier .ashx, les paramètres du cache sont généralement modifiés directement dans la classe.
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
2. Améliorez uniquement le client
(1) Modifiez l'adresse de la demande en ajoutant des nombres aléatoires ou des horodatages a. numéro :var url='AjaxOperations.aspx?rdm='+Math.random()+'&action='+op;b. Ajouter un horodatage :
var url='AjaxOperations.aspx?dtStamp='+new Date().getTime()+'&action='+op;Cette solution nécessite uniquement d'ajouter une heure ou un nombre aléatoire comme paramètre, et aucune modification n'est requise côté serveur. Le but peut être atteint. (2) L'appel asynchrone au premier plan définit les attributs de l'objet XMLHttpRequest Ajouter
XMLHttpRequest.setRequestHeader("If-Modified-Since","0")avant que XMLHttpRequest n'envoie la requête. Je pense personnellement que c'est le "droit". chemin". Parce que vous ne pouvez pas savoir quelles requêtes ajax doivent être mises en cache ou non (pour résoudre le goulot d'étranglement des performances du site Web, la plupart d'entre elles utilisent ajax en cache), donc chaque fois que vous envoyez une requête, confirmez si vous souhaitez la mettre en cache, par rapport au premier en 2 ( 1) Évidemment, un paramètre d'url de moins est écrit, et il n'est pas nécessaire de modifier les paramètres côté serveur (méthode d'amélioration 1). Cependant, pour la bibliothèque ajax encapsulée, vous ne pourrez peut-être plus le faire. pour utiliser l'objet XMLHttpRequest directement à l'extérieur. La syntaxe de paramétrage habituelle Il peut s'agir de passer ("If-Modified-Since", "0") en paramètre : ajaxObj.sendPost (autre liste de paramètres,...."If-Modified -Since", "0"); (méthode de publication) ou ajaxObj.sendGet (autre liste de paramètres,...."If-Modified-Since","0"); (méthode get)Ce qui précède est ce que j'ai compilé pour tout le monde, j'espère que cela sera utile à tout le monde à l'avenir. Articles connexes :
Explication détaillée des méthodes Ajax et form+iframe pour implémenter le téléchargement de fichiers
Une brève analyse de l'utilisation habile d'Ajax beforeSend améliore l'expérience utilisateur
Solution rapide pour les paramètres de transmission ajax contenant des caractères spéciaux
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!