web-dev-qa-db-fra.com

Forcer les visiteurs à obtenir les dernières versions des ressources (en contournant le cache du navigateur)

Comment puis-je (forcer) mes visiteurs sur mon site Web de nettoyer leur cache et d'obtenir le nouveau contenu mis à jour? Je me trouve parfois en train de lier les progrès de certains de mes projets et de les envoyer à d'autres, mais ceux-ci doivent d'abord nettoyer leur cache pour voir les modifications.

Je me demandais si je pouvais faire quelque chose que je puisse faire pour charger le nouveau contenu instantanément au lieu de le charger à partir de leur cache?

1
Panic

On dirait que votre site utilise mise en cache HTTP qui peut être ajusté à l'aide d'une forme de Mise en cache du navigateur ou à l'aide de chaînes de version de vos fichiers.

Vous pouvez utiliser 3 méthodes ci-dessous: Apache mod_expires , Apache FilesMatch et les chaînes de version à l'aide de PHP.

Apache mod_expires.c

<IfModule mod_expires.c> 
  ExpiresActive On
  ExpiresDefault "access plus 60 seconds"
  ExpiresByType text/html "access plus 60 seconds"
  ExpiresByType image/x-icon "access plus 60 seconds"
  ExpiresByType image/gif "access plus 60 seconds"
  ExpiresByType image/jpeg "access plus 60 seconds"
  ExpiresByType image/png "access plus 60 seconds"
  ExpiresByType text/css "access plus 60 seconds"
  ExpiresByType text/javascript "access plus 60 seconds"
  ExpiresByType application/x-javascript "access plus 60 seconds"
</IfModule>

Apache FilesMatch

<FilesMatch "\.(?i:gif|jpe?g|png|ico|css|js|swf)$">    
  <IfModule mod_headers.c>
    Header set Cache-Control "max-age=60, public, must-revalidate"
  </IfModule>    
</FilesMatch>

Gestion des versions

L'ajout d'une chaîne de requête à la fin du fichier fera croire au navigateur que le fichier n'est pas identique et qu'il le téléchargera à nouveau.

Chaque fois que vous modifiez une ressource, vous devez mettre à jour la chaîne de requête, par exemple:

  1. Version originale: <link rel="stylesheet" href="pro-webmasters.css">
  2. Version précédente: <link rel="stylesheet" href="pro-webmasters.css?v=0.1">
  3. Dernière version: <link rel="stylesheet" href="pro-webmasters.css?v=0.2">

Évidemment, cela prend beaucoup de temps lorsque vous avez plusieurs fichiers css, fichiers JavaScript et autres ressources, ceci peut être facilité en utilisant des variables PHP, par exemple:

<?php $VerNumber= "0.0.2"; ?>

<link rel="stylesheet" href="style.css?v=<?php echo $VerNumber; ?>">
<script src="jquery.js?v=<?php echo $VerNumber; ?>"></script>
<img src="image.jpg?v=<?php echo $VerNumber; ?>">
3
Simon Hayter