Maison > interface Web > js tutoriel > le corps du texte

Solution au problème de mise en cache IE dans l'appel ajax

亚连
Libérer: 2018-05-24 14:19:00
original
1427 Les gens l'ont consulté

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"%>
Copier après la connexion
.

(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);
Copier après la connexion

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=&#39;AjaxOperations.aspx?rdm=&#39;+Math.random()+&#39;&action=&#39;+op;
Copier après la connexion
b. Ajouter un horodatage :

var url=&#39;AjaxOperations.aspx?dtStamp=&#39;+new Date().getTime()+&#39;&action=&#39;+op;
Copier après la connexion
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")
Copier après la connexion
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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!