Lorsque le cache?
La figure ci-dessus trois rôles, le navigateur et le serveur proxy Web, le présent Http dans le tampon indiqué dans le navigateur FIG et le proxy Web. Bien sûr, à l'intérieur du serveur, il existe une variété de cache, mais ce cache Http n'est discuté plus dans cet article le. Http que l'on appelle le contrôle du cache, est une convention pour contrôler le navigateur et les règles d'utilisation du cache du proxy Web en définissant différents en-tête de réponse Cache-Control, en définissant une tête de requête If-None-Match et les en-têtes de réponse ETag, le cache la validité de la vérification.
tête de réponse ETag
ETag nom complet de l'étiquette Entité, utilisée pour identifier une ressource. Dans la mise en uvre spécifique, ETag peut être une valeur de hachage d'une ressource, il peut aussi maintenir un numéro de version interne. Dans tous les cas, ETag devrait être en mesure de tenir compte des changements dans le contenu de la ressource, qui est la base Http cache peut fonctionner correctement.
Comme dans le mode de réalisation illustré, lorsque le serveur renvoie une réponse, typiquement dans l'en-tête HTTP contient des informations de métadonnées sur la réponse, dans lequel, le ETag dans lequel a est, dans le présent mode de réalisation des rendements de la valeur x1323ddx Etag. Lorsque les changements de contenu ressources / fichier, le serveur doit retourner différent ETag.
tête de demande If-None-Match
Car après les mêmes ressources, telles que le fichier / un exemple de faire une demande, le navigateur a été / une version du contenu du fichier, et cette version de l'ETAG, la prochaine fois que l'utilisateur a besoin de cette ressource, navigateur lorsqu'une demande à nouveau le serveur, vous pouvez profiter de la tête de demande If-None-match pour dire au serveur qu'ils ont eu un ETag est x1323ddx du / fichier, de sorte que si / fichier ne change pas sur le serveur, c'est-à-dire / fichier sur le serveur ETag également x1323ddx, le serveur ne reviendra pas / fichier de contenu, mais renvoie une réponse 304, indiquant le navigateur que la ressource n'a pas changé, le cache est valide.
Comme le montre l'exemple ci-dessus, après avoir utilisé le If-None-Match, seul un serveur de réponse très faible peut obtenir le même résultat, pour optimiser les performances.
tête de réponse Cache-Control
Chaque ressource peut être définie par ses propres politiques de cache Http-tête Cache-Control, Cache-Control pour contrôler qui et dans quelles conditions peuvent être mises en cache la réponse peut être mis en mémoire cache et pour combien de temps. Le plus rapide n'est pas nécessaire de demander une demande de communiquer avec le serveur: par le biais d'une copie locale de la réponse, nous pouvons éviter le coût de toutes les données réseau latence et la transmission de données. Pour cette raison, la spécification HTTP permet au serveur de renvoyer un certain nombre de différentes commandes Cache-Control pour contrôler le cache du navigateur ou une autre réponse du relais, et comment mettre en cache un cache pour combien de temps.
tête Cache-Control définis dans la spécification HTTP / 1.1, la tête substitué (par exemple, le Expires) précédemment utilisée pour définir une stratégie de mise en antémémoire de réponse. Tous les navigateurs actuels prennent en charge Cache-Control, donc l'utiliser assez.
La commande suivante peut être utilisée pour me présenter et puis définissez Cache-Control.
max-age
L'instruction spécifie la demande de démarrage en cours, ce qui permet la réutilisation de la réponse acquise est le temps maximum (en secondes, par exemple :. Cache-Control :. max-age = 60 représente la réponse peut être mis en mémoire cache et réutilisé à nouveau 60 secondes à noter que, max-age dans le délai imparti, le navigateur n'envoyer toute demande au serveur, y compris vérifier si le cache demande valide, qui est, si cette période de temps, les ressources sur le serveur a changé, le navigateur ne sera pas informé et utilisez l'ancienne version de la ressource, de sorte que lorsque vous définissez la durée de la cache, il faut être prudent.
public et privé
Si le public, ce qui indique que la réponse peut alors parcourir un relais ou d'une cache de proxy Web, les valeurs par défaut publiques, à savoir, Cache-Control: max-age = 60 est équivalent à la Cache-Control: public, max-age = 60 .
Le serveur est fourni tel que privé Cache-Control: private, max-age = 60 cas, il n'y a que le navigateur de l'utilisateur peut mettre en cache une réponse privée, le relais ne permet pas de caches proxy Web les - par exemple, la boîte de navigateur de l'utilisateur cache contient des pages HTML informations privées de l'utilisateur, mais le CDN ne peut pas être mis en cache.
no-cache
Si le serveur est configuré no-cache Cache-Control dans la réponse: no-cache, le cache du navigateur avant d'utiliser les ressources, doit d'abord confirmer si le serveur renvoie la réponse est modifiée, si la ressource n'a pas été modifié, éviter le téléchargement . Que cette vérification avant que la réponse est modifiée, qu'il est, par l'en-tête de la demande décrite ci-dessus If-None-Match et les en-têtes de réponse ETAG atteints.
Notez que, sans cache le nom un peu trompeur. Après la mise en place sans cache, cela ne signifie pas que le navigateur ne sera pas en cache des données, tout en utilisant uniquement les données du cache du navigateur, vous devez confirmer si le serveur était assez aimable cohérence des données. Si vous définissez le no-cache, et la mise en uvre ETag ne reflète pas l'évolution des ressources, il en résultera des données du cache du navigateur n'a pas mis à jour la situation.
no-store
Si le serveur est configuré sans magasin Cache-Control dans la réponse: no-store, puis le relais d'un navigateur Web et proxy, ne stockent pas les données correspondantes. La prochaine fois que la demande de ressources, le navigateur ne peut demander à nouveau le serveur, les ressources relue à partir du serveur.
Comment déterminer une stratégie de ressources Cache-Control-il?
L'organigramme ci-dessous pour vous aider.