Cet article présente principalement le mécanisme de mise en cache ajax du navigateur IE. L'article mentionne qu'Ajax résout le problème de mise en cache du navigateur. Il existe de nombreuses solutions. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Le navigateur IE renvoie uniquement le même résultat pour la même URL. Parce que, par défaut, IE met en cache les résultats de la requête ajax. Pour une même adresse URL, seule la première requête sera effectivement envoyée au serveur avant l'expiration du cache. Dans la plupart des cas, nous utilisons ajax pour obtenir un rafraîchissement partiel, cela implique donc un problème d'amélioration.
Si nous voulons obtenir les dernières données à chaque fois, il nous suffit de nous assurer que l'URL transmise est différente à chaque fois. Le moyen le plus simple consiste à intégrer les paramètres dans l’URL. Utilisez la méthode random() de la fonction mathématique pour générer des nombres aléatoires.
Par exemple, lorsque vous visitez Baidu www.baidu.com, nous pouvons écrire l'adresse sous la forme www.baidu.com?t=Math.random( ou?t=new Date().getTime()); ;
Cela dit, autant revoir l'utilisation de base d'ajax.
*Objet créé par Ajax :
var xmlhttp; if (window.XMLHttpRequest){ //IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else{ //IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
*Requête Ajax :
//GET请求: xmlhttp.open("GET","test1.txt",true); xmlhttp.send(); //POST请求: xmlhttp.open("POST","demo_post.asp",true); xmlhttp.send();
OBTENIR ou POST ?
Comparé au POST, GET est plus simple et plus rapide, et fonctionne dans la plupart des cas.
Utilisez cependant les requêtes POST dans les situations suivantes :
Les fichiers cache ne peuvent pas être utilisés (mise à jour de fichiers ou de bases de données sur le serveur)
Envoi d'une grande quantité de données vers le serveur (POST n'a aucune limitation de quantité de données)
POST est plus stable et fiable que GET lors de l'envoi d'une entrée utilisateur contenant des caractères inconnus
*Réponse Ajax :
Pour obtenir la réponse du serveur, vous devez utiliser la propriété ResponseText ou ResponseXML de l'objet XMLHttpRequest.
ResponseText : obtenez les données de réponse sous forme de chaîne.
document.getElementById("myp").innerHTML=xmlhttp.responseText;
ResponseXML : obtenez les données de réponse au format XML.
Si la réponse du serveur est XML et doit être analysée comme un objet XML.
*Ajax - onreadystatechange :
Lorsqu'une requête est envoyée au serveur, nous devons effectuer certaines tâches basées sur les réponses.
Chaque fois que readyState change, l'événement onreadystatechange sera déclenché.
Dans l'événement onreadystatechange, nous spécifions les tâches à effectuer lorsque la réponse du serveur est prête à être traitée.
Lorsque readyState est égal à 4 et que le statut est 200, cela signifie que la réponse est prête :
xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myp").innerHTML=xmlhttp.responseText; } }
Supplément : Jetons un coup d'œil à Ajax pour résoudre les problèmes de mise en cache du navigateur
La principale raison pour laquelle Ajax peut améliorer la vitesse de chargement des pages est de réduire le chargement des données en double via Ajax, c'est-à-dire que les données sont mises en cache dans la mémoire pendant le chargement les données une fois les données chargées, tant que la page n'est pas actualisée, ces données seront toujours mises en cache dans la mémoire. Lorsque l'URL soumise est cohérente avec l'URL historique, il n'est pas nécessaire de la soumettre au serveur, c'est-à-dire qu'il n'est pas nécessaire d'obtenir des données du serveur, bien que cela réduise la charge du serveur, ce qui améliore l'expérience utilisateur, mais ne peut pas obtenir les données les plus récentes. Afin de garantir que les informations lues sont à jour, sa fonction de mise en cache doit être désactivée.
Les solutions sont les suivantes :
① Ajoutez anyAjaxObj.setRequestHeader("If-Modified-Since", "0") avant qu'Ajax n'envoie la requête.
②Ajoutez anyAjaxObj.setRequestHeader("Cache-Control", "no-cache") avant d'envoyer la requête Ajax.
③ Ajoutez un nombre aléatoire après l'URL : "fresh=" + Math.random();.
④Ajoutez l'heure après l'URL : "nowtime=" + new Date().getTime();.
⑤ Si vous utilisez jQuery, utilisez $.ajaxSetup({cache:false}). De cette façon, tous les Ajax de la page exécuteront l'instruction sans enregistrer les enregistrements du cache.
Résumé
Ce qui précède est le mécanisme de mise en cache d'ajax dans le navigateur IE introduit par l'éditeur. J'espère qu'il sera utile. à tout le monde. Pour plus de didacticiels connexes, veuillez visiter le Tutoriel vidéo de base AJAX, le Tutoriel vidéo JavaScript, le Tutoriel vidéo bootstrap !
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!