Maison >interface Web >js tutoriel >Pourquoi iOS 6 Safari met-il en cache mes appels $.ajax même avec des en-têtes « no-cache » ?

Pourquoi iOS 6 Safari met-il en cache mes appels $.ajax même avec des en-têtes « no-cache » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-05 04:18:02578parcourir

Why Does iOS 6 Safari Cache My $.ajax Calls Even With `no-cache` Headers?

iOS 6 Safari : mise en cache des appels $.ajax

Il a été observé que la vue Web de Safari dans iOS 6 mettait en cache les appels $.ajax, même lorsqu'il est explicitement spécifié de ne pas le faire. Ce comportement particulier a été rencontré dans le contexte des applications PhoneGap, qui utilisent Safari WebView.

Cause du problème de mise en cache

Une enquête a révélé que Safari met en cache les requêtes POST qui manque d'en-têtes Cache-Control ou contient l'en-tête "Cache-Control: max-age=0." Ce comportement découle d'une interprétation de la spécification HTTP, qui stipule que les réponses POST peuvent être mises en cache avec les en-têtes appropriés.

Solutions

Pour empêcher la mise en cache, le Cache-Control l'en-tête doit être défini sur "no-cache". Ceci peut être réalisé globalement dans les configurations Apache en utilisant :

Header set Cache-Control "no-cache"

Pour les requêtes POST spécifiquement, le même paramètre peut être appliqué en utilisant :

SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST

Alternativement, une solution de contournement consiste à modifier les signatures de fonction :

getNewRecordID(intRecordType, strTimestamp)

En ajoutant un paramètre d'horodatage à la signature de fonction, la requête change effectivement à chaque appel, empêchant la 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!

Déclaration:
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