Fonction PHP filemtime() pour cacher les fichiers CSS et JS

Rigueur. Et passion !

Ne dites pas à ma mère que je suis artisan en architecture de l'information appliquée aux sites web : elle croit que je suis webdesigner, intégrateur HTML & CSS, rédacteur web, formateur NTIC et consultant en webmarketing depuis 2001 ! Voulez-vous en savoir plus ?

Le blog de l'intégrateur web

Fonction PHP filemtime() pour cacher les fichiers CSS et JS

Vous le savez certainement, les fichiers Javascript ou CSS sont placés dans le cache du navigateur pour être réutilisés sans devoir aller chercher les mêmes informations sur le serveur. C’est assez pratique car les fichiers en question ne sont téléchargés qu’une fois. Mais si vous modifiez ces fichiers après la mise en ligne, c’est la version placée en cache qui continuera de s’afficher jusqu’à ce que l’utilisateur vide son cache d’une façon ou d’une autre.

Pour y remédier, Damien Ravé nous propose une utilisation judicieuse de la fonction PHP filemtime() qui renvoie la date de la dernière modification d’un fichier pour recharger le cache CSS ou JS :

<script type="text/javascript" src="js/script.js?v=<?php echo filemtime('js/script.js'); ?>">
<link rel="stylesheet" type="text/css" href="css/ecran.css?v=<?php echo filemtime('css/ecran.css'); ?>">

Articles sur le même sujet

PS : Le respect de la vie privée sur internet est important : j'ai décidé d'échanger mon bouton Like de Facebook par un bouton Faire un don de Paypal car
Il n'y pas d'amour, il n'y a que des preuves d'amour (Jean Cocteau) ;) Merci d'avance.



5 commentaires pour “Fonction PHP filemtime() pour cacher les fichiers CSS et JS”

  1. Nicolas F. dit :

    Attention : C’est gourmand en ressource et qui plus est ça ne fait que déplacer le problème : Manuel PHP > « Note: Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() pour plus de détails. »

  2. julien dit :

    Pratique similaire utilisée pour loader des fichiers externes en flash (ajout d’une variable aléatoire en get dans l’url). Mais comme le dis Nicolas, tout n’est pas rose dans cette méthode.

    Mais l’astuce reste sympa :)

  3. Bruno Bichet dit :

    @Nicolas F.:

    Attention : C’est gourmand en ressource

    Ca dépend de quelles ressources tu parle, parce qu’au niveau php, je pense que ça doit être assez négligeable.

    a ne fait que déplacer le problème

    Oui, j’ai lu aussi cette phrase, mais j’avoue ne pas voir précisément de quel cache il s’agit : celui du navigateur, celui de PHP lui-même, du serveur ?.. Bref, si tu pouvais me renseigner plus précisément, je suis preneur.

    @julien:

    tout n’est pas rose dans cette méthode.

    Yep, c’est bien possible mais je viens de voir que Twitter semble utiliser cette méthode, et vu le nombre d’utilisateurs, je me dit que si twitter l’utilise alors nous le pouvons tous ! (je parle question performances brutes, pas d’éventuels effets de bord) ;)

  4. Eric dit :

    Comme dit Nicolas, ça peut être un problème de performance sur des sites à fort traffic. Mais surtout, ça n’a de sens que si de l’autre côté les fichiers flash/js/css sont envoyés avec des entêtes de cache explicites.

    Reste que c’est une méthode très connue et assez classique. C’est ce qu’utilise nativement rails à chaque fois qu’on inclus un statique (twitter c’est du Rails, d’où le fait qu’ils utilisent ça aussi).

    Ceux qui travaillent sur de très gros sites utilisent de toutes façons des CDN pour les ressources statiques, ou au moins des serveurs différents. Là les CDN ne sauront pas mettre à jour un fichier sans changer le nom (d’où le fait que beaucoup de gros sites insèrent des dates ou des versions dans le nom du fichier lui même).

    Sinon ça implique aussi de ne gérer le cache que dans le navigateur, certains proxy ne mettent pas en cache les fichiers ayant un paramètre de GET (ils devraient, mais ils ne le font pas).

  5. […] is the original post:  Commentaires sur Fonction PHP filemtime() pour cacher les fichiers CSS et JS (Javascript & PHP) … Related ArticlesBookmarksTags PHP PHP is a computer scripting language. Originally […]

Laissez un commentaire

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Les commentaires sont publiés sous votre pleine et entière responsabilité et ne doivent pas contrevenir aux lois et règlementations en vigueur. Les propos racistes ou antisémites, diffamatoire ou injurieux, divulguant des informations fausses, relatives à la vie privée d'une personne ou utilisant des oeuvres protégées par les droits d'auteurs ne sont pas les bienvenus et seront modérés sans modération.

Merci d'être constructif et n'oubliez pas : « sans la liberté de ramer il n'est point d'éloge flotteur ! »



Colophon

CSS & Webdesign est une publication irrégulomadaire à tendance hebdomadaire
éditée par Bruno Bichet qui carbure à WordPress et au café équitable.
Tous droits réservés © 2006 - 2011.

Contactez l'auteur du site