web-dev-qa-db-fra.com

Google Pagespeed me dit de tirer parti de la mise en cache du navigateur lorsque la mise en cache est déjà activée

Google Pagespeed Insights m'indique toujours que je dois activer la mise en cache du navigateur, mais je ne comprends pas ce qui me manque. J'utilise cloudflare avec les optimisations activées. Je vois cet en-tête HTTP dans les outils de développement chrome:

cache-control: public, max-age = 86400

alors la mise en cache semble déjà activée! J'ai aussi ajouté

<staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>

dans mon fichier web.config.

Je ne sais pas quoi faire d'autre. Voici l'erreur que me donne Google:

enter image description here

8
euge9522

24 heures, c'est trop peu pour que le contrôle du cache suffise :) En théorie, les images ne changent jamais sans leur nom, vous pouvez donc le définir facilement sur un an (ou un mois si vous vous sentez plus à l'aise avec cela).

Si vous remplacez une image par une nouvelle image, elle porte un nouveau nom. picture-of-cat-on-18th-birthday.jpg ne sera pas subitement une autre image avec le même nom de fichier. Pour cette raison, les noms de fichiers doivent être quelque peu spécifiques à leur contenu.

Pour d'autres types de ressources comme CSS et JS, vous pouvez opter pour une tactique différente. Vous avez (souvent) changé des fichiers, et jamais/à peine, vous voulez diviser la longueur de leur mise en cache:

  • ne change jamais -> cache très long
  • changer -> cache bas

Ce n'est pas faisable. Vous pouvez les faire tous les deux ou aucun, . Htaccess voit un type de fichier.
À cause de cela, vous le définissez sur le cache long et utilisez un suffixe pour forcer un nouveau téléchargement s'il change:

<script src="static.js" />  
<script src="changing.js?last_update=150422" />

Ainsi, l'utilisateur ne doit le télécharger à nouveau que si vous avez réellement apporté une modification.
Cette technique fonctionne sur toutes les ressources. Visez toujours la durée de mise en cache la plus longue.

6
Martijn

Je vois que la réponse précédente disait que 24 heures ne suffisent pas. Mais en regardant dans le document Google: https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching#defining-optimal-cache-control-policy il dit que les images soient mises en cache pendant 1 jour pour une mise en cache optimale.

La mise en cache des images pour une courte durée est logique, car pour améliorer le référencement, il est préférable de ne pas prendre d'empreintes digitales. C'est donc un bon compromis si vous souhaitez modifier l'image.

De plus, après 24 heures, les images seront chargées (lorsque vous définissez le contrôle du cache sur 1 jour), il utilisera ensuite la balise électronique et comparera les images en effectuant un aller-retour et une nouvelle mise en cache du serveur.

Il reste donc à savoir pourquoi l’outil Pagespeed Insight ne respecte pas les recommandations de Google.

4
Samuel