Que se passe-t-il si vous ne définissez pas l'en-tête de contrôle du cache?

13

Que se passe-t-il si vous ne définissez pas l'en- cache-controltête? HTTP spécifie-t-il un comportement par défaut que les clients doivent suivre ou appartient-il aux clients de décider?

Dans Chrome, j'ai vu des demandes Javascript sans en- cache-controltête s'afficher 200 (from disk cache). Chrome optimise-t-il cela?

Dans IE, je l'ai vu apparaître comme un 304 (not modified).

Comment puis-je mieux comprendre cela?

Nishant
la source
1
"pas d'en-têtes de cache", ce qui signifie pas d'en-tête Cache-Control, ou vraiment pas d'en-têtes de cache? Le contrôle du cache n'est pas le seul en-tête qui affecte la mise en cache. La plupart des serveurs Web enverront des en-têtes Last Modified pour les actifs statiques comme les fichiers Javascript.
Tim Fountain

Réponses:

18

S'il n'y a pas d'en- Cache-Controltête ni d'en- Expirestête, mais qu'il y a un en- Last-Modifiedtête (que la plupart des serveurs Web envoient par défaut pour les actifs statiques), la plupart des navigateurs utiliseront la fraîcheur heuristique pour déterminer la durée de mise en cache de cet actif.

Le calcul typique pour cela (qui est celui suggéré par la RFC 7234 ) est:

(current time - last modified time) / 10

Ainsi, par exemple, si la dernière heure de modification d'une image indique qu'elle a été modifiée pour la dernière fois il y a 60 jours, un navigateur peut décider qu'il peut raisonnablement utiliser la version localement mise en cache de cette image pendant 6 jours avant de rechercher une nouvelle version.

Notez que dans la plupart des cas, si vous actualisez, vous dites le navigateur pour aller chercher une nouvelle version, donc dans cette situation cette logique ne serait pas applicable.

Fontaine Tim
la source
1
Et s'il n'y a pas d'en- Last-Modifiedtête?
bertonc96