Résultats de la mise en cache $.ajax de Safari sur iOS 6 : une analyse
Depuis la sortie d'iOS 6, des inquiétudes sont apparues concernant la mise en cache de la vue Web de Safari $ Appels .ajax. Malgré la définition explicite de l'attribut cache sur « false », des comportements de mise en cache inattendus persistent, en particulier pour les méthodes POST avec des signatures de fonction statiques qui reçoivent systématiquement les mêmes paramètres d'entrée.
Cause fondamentale
Une enquête a révélé que Safari sur iOS 6 met en cache les requêtes POST dépourvues d'en-têtes Cache-Control ou contenant "Cache-Control: max-age=0". Cela diffère des autres navigateurs qui respectent la non-mise en cache des réponses POST.
Solution de contournement
Pour empêcher la mise en cache globale, la seule solution efficace consiste à définir "Cache-Control : pas de cache." Cet en-tête interdit explicitement la mise en cache.
Exemples
Configuration Apache
Pour implémenter cette solution de contournement dans Apache, ajoutez la ligne suivante à votre fichier de configuration :
Header set Cache-Control "no-cache"
Alternativement, pour limiter ce comportement uniquement aux requêtes POST :
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
Notes supplémentaires
Il convient de noter que la mise en cache ne se produit que lorsque les paramètres et l'URL de la requête POST restent inchangés. L'introduction de données aléatoires dans l'URL ou la charge utile POST peut contourner le problème de mise en cache.
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!