Skip to content

Instantly share code, notes, and snippets.

@384400
Last active April 4, 2016 22:27
Show Gist options
  • Save 384400/dd75980d1f13343f1620 to your computer and use it in GitHub Desktop.
Save 384400/dd75980d1f13343f1620 to your computer and use it in GitHub Desktop.
[PHP] [Html] [JavaScript ] [Css] Empêcher la mise en cache des fichiers par le navigateur

Comment empêcher la mise en cache des fichiers par le navigateur ?

Les navigateurs sont bien conçus : pour accélérer le traitement des pages, les fichiers, par exemple les Cascading Style Sheets (Css) ou autres bibliothèques JavaScript ou jQuery, sont mis en cache. Or, cet avantage est contre-productif pour le développeur : il doit modifier constamment la configuration de son logiciel de navigation afin de voir les changements.

Grâce à cette astuce élémentaire, <?php echo '?'.mt_rand(); ?>, qui requiert donc l'utilisation de Hypertext Preprocessor (Php), les fichiers seront systématiquement rafraîchis et les modifications instantanées ; leurs noms seront modifiés aléatoirement à chaque chargement de page.

Bien entendu, pour être agréable à ses visiteurs (!), il ne faudra pas oublier de renommer l'appel des feuilles de styles et autres scripts lors de la mise en production.

Avec WordPress, on pourrait utiliser dans le fichier functions.php...

  define('DEVVERSION', time()); 
  add_action( 'wp_enqueue_scripts', '_mytheme_librairies' );
  if ( ! function_exists( '_mytheme_librairies' ) ) {
    function _mytheme_librairies() {
        wp_enqueue_style( 'mytheme', get_stylesheet_uri(), array(), DEVVERSION, all );
    }
  }
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Comment empêcher la mise en cache des fichiers par le navigateur ?</title>
<meta name="description" content="Comment empêcher la mise en cache des fichiers par le navigateur en cours de développement ? Elle est commode pour les visiteurs, pas pour le dévloppeur." />
<link rel="stylesheet" href="css/main.css<?php echo '?'.mt_rand(); ?>">
</head>
<body>
<script src="js/main.js<?php echo '?'.mt_rand(); ?>"></script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment