web-dev-qa-db-fra.com

Qu'est-ce que l'en-tête Pragma? Mise en cache des pages .. et IE

J'envoie donc un en-tête en php pour mettre en cache ma page (cela s'intègre également dans notre "CDN" (contendo/akamai)). J'utilise toujours ce pragma: en-tête de cache, j'ai également vu divers exemples l'utiliser; cependant, je viens de vérifier fiddler pour tester le trafic pour cette application .net que nous avons développée et il dit:

Legacy Pragma Header is present: cache
!! Warning IE supports only an EXACT match of "Pragma: no-cache". IE will ignore the Pragma header if any other values are present.
...

Je suppose que ça va. Le reste de la réponse semble bien et selon mes spécifications. Voici mon code:

function headers_for_page_cache($cache_length=600){
    $cache_expire_date = gmdate("D, d M Y H:i:s", time() + $cache_length);
    header("Expires: $cache_expire_date");
    header("Pragma: cache");
    header("Cache-Control: max-age=$cache_length");
    header("User-Cache-Control: max-age=$cache_length");
}

La question est: est-ce important? Que fait même l'en-tête pragma? En ai-je besoin? J'ai vérifié la documentation de la spécification d'en-tête HTTP et elle a dit qu'elle est spécifique à l'implémentation et que le seul Pragma qui est appliqué est "Pragma: no-cache".

Est-ce le meilleur choix d'en-têtes à mettre en cache pour une durée spécifique?

28
Parris

Sous une forme très simplifiée, Pragma:no-cache or Pragma:cache sont désormais des moyens "presque" obsolètes de transmettre des instructions de mise en cache aux implémentations clientes, en particulier les navigateurs et les proxys. La façon dont l'implémentation client répond aux en-têtes Pragma varie, c'est pourquoi la spécification indique qu'elle est spécifique à l'implémentation.

La manière la plus moderne de Cache-control est ce sur quoi vous pouvez compter en toute sécurité, car presque toutes les implémentations clientes le suivent de manière rigide.

De plus, si vous disposez des deux Cache-control et Pragma définis pour la même instruction, par exemple la mise en cache, puis Cache-control a priorité.

Ceci est un excellent article sur tout ce qui concerne la mise en cache et je pense que cela fait une lecture très intéressante et utile: http: // www. mnot.net/cache_docs/

39
raidenace