2010-06-09 20 views
7

Je Renvoyez une image avec l'en-tête de réponse HTTP suivante:Comment mettre en cache un fichier côté client de telle sorte que le navigateur cesse même de prendre la peine de le demander à nouveau?

Cache-Control: private,max-age=86400 

Ma compréhension est que le navigateur ne devrait même pas demander ce fichier pendant 24 heures (86.400 = 60 * 60m * 24h).

Ce que je vois sur les demandes suivantes est qu'il demande toujours le fichier, mais récupère un "304 non modifié". C'est bien, mais je veux supprimer même cette demande/réponse.

Quel en-tête est nécessaire pour empêcher le navigateur de prendre la peine de demander le fichier, et de le faire utiliser aveuglément le fichier qu'il a dans le cache local, jusqu'à ce que ce fichier expire?

+0

Même comportement sur tous les navigateurs? Cela devrait suffire à cela: -s –

Répondre

2

Tout dépend vraiment de la façon dont vous testez cela. Sur Firefox 3.6 et IE8, en cliquant sur un lien puis sur un lien qui vous ramènera à la première page, vous utiliserez le cache correctement avec max-age. Frapper la touche Retour dans le champ URL affichera le même comportement. Cependant, si vous appuyez sur F5, vous demanderez à nouveau le fichier mais autoriserez 304 réponses. Si vous appuyez sur Ctrl + F5, le fichier sera toujours demandé, Cache-Control et Pragma étant définis sur no-cache, ce qui oblige à répondre 200.

+0

Merci beaucoup. Je n'ai pas réalisé que frapper F5 était le problème. Lorsque j'ai testé en cliquant simplement sur un lien (donc, un simple GET), cela fonctionne comme je l'avais prévu. – Deane

0

Cela ne peut simplement pas être fait de manière fiable en HTML 5. <

Vous pouvez utiliser client side storage en HTML5 ou utiliser une extension de navigateur tel que Gears pour fournir cette fonctionnalité.

+0

que voulez-vous dire par "ne peut pas être fait de manière fiable"? Il n'y a aucune garantie que le navigateur gardera la ressource sur le cache jusqu'à l'heure d'expiration, mais il devrait le garder pour un "while" au moins: -D –