Maison > interface Web > js tutoriel > Pourquoi Safari sur iOS 6 met-il en cache les requêtes POST $.ajax même avec cache=false ?

Pourquoi Safari sur iOS 6 met-il en cache les requêtes POST $.ajax même avec cache=false ?

Linda Hamilton
Libérer: 2024-11-03 22:50:03
original
1038 Les gens l'ont consulté

Why Does Safari on iOS 6 Cache $.ajax POST Requests Even with cache=false?

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

  • Aucun en-tête Cache-Control ou Expires : la mise en cache se produira.
  • Cache-Control max -age=0 et une expiration immédiate : la mise en cache aura lieu.
  • Cache-Control : no-cache : la mise en cache n'aura PAS lieu.

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

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

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal