web-dev-qa-db-fra.com

Quelle est la différence entre les en-têtes Expires et Cache-Control?

Quelle est la différence entre Expires et Cache-Control en-têtes?

165
poorani

Cache-Control a été introduit dans HTTP/1.1 et offre plus d’options que Expires. Ils peuvent être utilisés pour accomplir la même chose mais la valeur de données pour Expires est une date HTTP alors que Cache-Control max-age vous permet de spécifier une durée relative afin de spécifier "X heures après la demande de la page".

HTML Cache control est une question très similaire et propose un bon lien vers un tutoriel de mise en cache qui devrait répondre à la plupart de vos questions (par exemple, http://www.mnot.net/cache_docs/ #EXPIRES ). Pour résumer, Expires est recommandé pour les ressources statiques telles que images et Cache-Control lorsque vous avez besoin de plus de contrôle sur la mise en cache.

121
A Lee

Si vous utilisez un CDN (réseau de distribution en nuage), il est recommandé d’utiliser Cache-Control avec une durée maximale en secondes. Par exemple Cache-Control: max-age = 604800. Ceci empêche les requêtes de pointe sur votre serveur Origin: Avec "Expires le mercredi, 30 octobre 20xx 04:37:07 GMT", tous les navigateurs vous le demandent simultanément.

32
user3241258

Selon cet article de Google Developers, HTTP Caching :

L'en-tête Cache-Control a été défini dans le cadre de la spécification HTTP/1.1 et remplace les en-têtes précédents (par exemple, Expires) utilisés pour définir les stratégies de mise en cache de la réponse. Tous les navigateurs modernes prennent en charge Cache-Control, c’est donc tout ce dont nous aurons besoin.

16
Paul

Cache-Control a été défini dans HTTP/1.1 et indique à tous les mécanismes de mise en cache, du serveur au client, s'ils peuvent ou non mettre cet objet en cache. Il est mesuré en secondes: Cache-Control: max-age=3600.

Le champ d'en-tête Expires donne la date/heure après laquelle la réponse est considérée comme périmée. La valeur Expires est un horodatage de date HTTP: Expires: Tue, 18 Jul 2017 16:07:23 GMT.

Si une réponse inclut un Cache-Control champ avec le max-age directive, un destinataire DOIT ignorer le champ Expires.

5
nodejh

Heroku devcenter a un excellent article à ce sujet.

Citant de cela,

Tandis que l'en-tête Cache-Control active la mise en cache côté client et définit l'âge maximal d'une ressource, l'en-tête Expires est utilisé pour spécifier un moment spécifique où la ressource n'est plus valide.

4
Devi

Si vous êtes toujours intéressé, je laisse cette recommandation directement aux garçons de Google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Ils préfèrent expirer avant que Cache-Control

0
ray

À l'exception des options privées/publiques de CC, je ne vois aucune différence. Lorsque vous utilisez Expires comme "accès plus 1 an/mois/semaine/jour", cela fonctionne exactement de la même manière que CC.

0
Rob