2013-08-23 2 views
1

Je souhaite mettre en œuvre ETag basé cache-control, et je me demande combien de temps ETags sont stockés dans un navigateur et si elles peuvent être conservées plus longtemps que la session en cours.Comment et pour combien de temps les navigateurs stockent-ils Etags?

J'ai le réglage du serveur et l'envoi ETags pour les réponses correctement, et j'envoie des demandes du navigateur avec jQuery.ajax.

Le système fonctionne correctement, répondant à la appropriée 304 réponse si l'en-tête Not-Modified (précédente ETag) correspond au produit ETag sur le serveur. Cela fonctionne très bien pour la session en cours, mais lorsque je ferme le navigateur et le rouvre, l'en-tête Not-Modified n'est plus envoyé par jQuery.

Je me demande s'il y a des méthodes que je pourrais utiliser pour déclencher le comportement par défaut du navigateur, et envoyer l'en-tête Not-Modified des réponses (le cas échéant), sans régler manuellement l'en-tête dans la requête ajax ou le stockage du ETag dans localStorage/indexedDb.

+0

si un 'etag' n'est pas envoyé correctement après une session est fermée, peut-être vous n'êtes pas expédiez le droit' têtes expires'. –

+0

Videz-vous le cache à la fin de la fenêtre? Le 'ETag' est stocké avec le fichier dans le cache. Donc, si le navigateur efface les éléments hors du cache, 'ETag' est également perdu. Toutefois, si le fichier est toujours dans le cache, le navigateur envoie le 'ETag' avec la requête pour indiquer au serveur qu'il existe déjà un fichier avec ce' ETag' dans le cache. –

Répondre

0

Un eTag doit être accompagnée d'autres balises qui indiquent au navigateur combien de temps pour maintenir le contenu

https://developers.google.com/speed/docs/best-practices/caching?csw=1#LeverageBrowserCaching

Il est important de spécifier l'une des Expires ou Cache-Control max-age, et un de Last-Modified ou ETag, pour toutes les ressources pouvant être mises en cache. Il est redondant de spécifier à la fois Expires et Cache-Control: max-age, ou de spécifier à la fois Last-Modified et ETag.

Donc tout dépend de la durée que vous spécifiez avec le Expires ou une étiquette max-age sur combien de temps le navigateur tenir

Le seul but de l'ETAG est pour que le navigateur peut émettre un « si modifié "demande après la période d'expiration initiale pour voir si le contenu a effectivement changé ou récupère un 304 non modifié.

304 de mal gérées peuvent causer d'autres problèmes, comme 304 inutiles et redondantes demandes: http://calendar.perfplanet.com/2010/easy-cache-headers/

+0

Merci pour les ressources, est très pratique pour vérifier si je définis les en-têtes à droite. En fin de compte, mon problème a été causé par Chrome ne pas mettre en cache des fichiers avec des certificats auto-signés sur les connexions «https». – Eliendrae

Questions connexes