web-dev-qa-db-fra.com

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

Que se passe-t-il si vous ne définissez pas l'en-tête cache-control? HTTP spécifie-t-il un comportement par défaut que les clients doivent suivre ou est-ce que ce sont les clients qui décident?

Dans Chrome, j'ai vu des requêtes Javascript ne comportant pas d'en-tête cache-control apparaissant sous la forme 200 (from disk cache). Est-ce que Chrome optimise cela?

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

Comment est-ce que je comprends mieux cela?

8
Nishant

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

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

(current time - last modified time) / 10

Ainsi, par exemple, si l'heure de la dernière 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 d'utiliser raisonnablement la version en cache locale de cette image pendant 6 jours avant de rechercher une nouvelle version.

Notez que dans la plupart des cas, si vous cliquez sur Actualiser, vous indiquez au navigateur de rechercher une nouvelle version. Dans ce cas, cette logique ne s'appliquerait pas. .

11
Tim Fountain