2011-12-27 2 views
2

YSLOW suggère: Pour les composants statiques: implémentez la politique "Ne jamais expirer" en définissant le futur éloigné Expose header .... si vous utilisez un en-tête Expires lointain, vous devez changer le nom du composant chaque fois que le composant change. Chez Yahoo! cette étape fait souvent partie du processus de construction: un numéro de version est incorporé dans le nom de fichier du composant, par exemple, yahoo_2.0.6.js. Je voudrais profiter de la mise en cache pour mes pages essentiellement statiques et recharger les fichiers js lorsque le numéro de version change. J'ai défini un # de version pour mes fichiers .js mais ma page main.html a Expires défini à l'avenir, donc il ne recharge pas et ne recharge donc pas les fichiers js. Idéalement, je voudrais dire au navigateur (en utilisant une technique psychique) de recharger main.html lorsqu'une nouvelle version du site est publiée. Je pourrais toujours recharger ma page main.html, mais je perdrais alors le bénéfice de la mise en cache. Je ne cherche pas la réponse ctrl-F5 car cela doit se faire automatiquement pour nos utilisateurs.Comment déclencher l'actualisation html du navigateur pour les fichiers html mis en cache?

Je pense que la réponse est: main.html ne peut pas être mis en cache, mais j'aimerais savoir ce que les autres font pour résoudre ce problème. Comment obtenez-vous les meilleurs avantages de mise en cache et de rechargement?

Merci.

+0

Je pense que vous avez raison - * main.html ne peut pas être mis en cache *. Ou au moins pas la page entière. –

+0

Assurez-vous que vous êtes le support du serveur 304 non modifié, donc au moins aucun contenu ne doit être re-téléchargé si la page n'a pas changé. Si vous voulez plus, vous pouvez regarder dans l'appcache de html5. Cela fait l'affaire que vous voulez, mais vous avez besoin de JS pour «recharger» la page si l'appcache a changé. Sinon, la page sera mise à jour la prochaine fois que la page sera demandée. Probablement n'a pas beaucoup de sens pour vous, ce que je viens de dire. – Gerben

Répondre

1

Votre analyse est correcte. Les meilleures pratiques en matière de performances Web suggèrent une date d'expiration éloignée pour les composants statiques (c'est-à-dire ceux qui ne changent pas souvent) et l'utilisation d'un numéro de version dans l'URL gère bien ces modifications.

Pour la page principale (main.html), vous ne définissez pas une date d'expiration future éloignée. Au lieu de cela, vous ne pouvez pas définir une expiration ou la définir pour une durée minimale, par exemple +24 heures.

0

Devinez si cela dépend de la raison pour laquelle vous voulez mettre en cache la page HTML - pour améliorer les temps de chargement des utilisateurs ou réduire la charge du serveur. Même avec un long délai d'expiration, vous pourriez constater qu'il n'est pas réellement mis en cache chez le client pendant très longtemps (les études de Yahoo montrent que les fichiers ne vivent pas dans le cache très longtemps), donc un temps d'expiration plus court, e.g. 1 jour, pourrait ne pas être un problème. Si vous voulez réduire la charge du backend, il peut être utile de vérifier si un proxy tel que Varnish peut vous aider à mettre en cache les pages du serveur d'origine au moment de leur utilisation. De cette façon, vous pouvez contrôler la durée de mise en cache des pages avec un niveau de contrôle plus fin.

Questions connexes