Quelle est la différence entre Expires
et Cache-Control
en-têtes?
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.
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.
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.
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
.
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.
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
À 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.