web-dev-qa-db-fra.com

HTML - Contrôle maximal du cache

J’aimerais toujours présenter le dernier contenu du site Web à l’utilisateur, mais aussi le faire charger rapidement. En faisant des recherches, je suis tombé sur des personnes suggérant d'utiliser la mémoire cache pour accélérer le chargement. 

Alors, que dois-je ajouter à mon site Web pour "écraser" le cache au bout de 3 jours afin d'afficher le dernier contenu?

19
Uli

Il y a plus d'une façon de faire cela - mais vous devez considérer exactement ce que vous devez mettre en cache et ce que vous n'avez pas. Les plus grandes augmentations de vitesse viendront probablement de vous assurer que vos ressources (css, images, javascript) sont mises en cache, plutôt que le code HTML lui-même. Vous devez ensuite examiner divers facteurs (à quelle fréquence ces ressources changent-elles, comment forcerez-vous un utilisateur à télécharger une nouvelle version du fichier?).

Souvent, dans le cadre du processus de publication d'un site, un nouveau nom de fichier est attribué aux nouveaux fichiers (fichiers mis à jour) afin de forcer le navigateur de l'utilisateur à télécharger à nouveau le fichier, mais il ne s'agit que d'une approche.

Jetez un coup d’œil à Apache mod_expire et à la possibilité de définir les délais d’expiration des ressources à l’aide du fichier .htaccess.

http://www.google.com/?q=Apache+cache+control+htaccess#q=Apache+cache+control+htaccess

11
calumbrodie

L'en-tête Cache-Control est utilisé dans HTTP 1.1 pour contrôler le comportement des caches. La directive max-age est utilisée pour spécifier (en secondes) l'âge maximum du contenu avant qu'il ne devienne obsolète (c'est-à-dire que le contenu ne changera pas pendant une certaine période). Donc, si vous savez que votre contenu ne changera pas pendant 3 jours, vous souhaitez que votre serveur ajoute l'en-tête HTTP suivant:

Cache-Control: max-age=259200

(259200 = 60s x 60m x 24h x 3d)

Pour faire cela en PHP, ajoutez cette ligne à votre sortie:

header('Cache-Control: max-age=259200');

Lisez ici pour plus d'informations sur la fonction d'en-tête:

16
james.garriss

Comme mentionné précédemment, les en-têtes Expires et Cache-Control constituent généralement le meilleur moyen d'intégrer des informations sur la durée de vie des informations.

Étant donné que les clients ne sont pas très fiables lors de l'interprétation de ces informations, les procurations dotées de fonctions de mise en cache telles que calmar, vernis ou autres solutions sont préférées par la plupart des utilisateurs. Vous devez également déterminer si vous souhaitez mettre en cache uniquement le contenu statique (images, feuilles de style, etc.) ou le contenu généré dynamiquement.

1
fyr

Selon les recommandations YSlow , vous pouvez configurer votre serveur Web pour ajouter un en-tête Expires ou Cache-Control à la réponse, ce qui entraînera la mise en cache de la réponse par les agents utilisateurs pour la durée spécifiée.

0
Darin Dimitrov