33 lines
1.6 KiB
PHP
33 lines
1.6 KiB
PHP
<?php
|
|
|
|
// Fonction qui construit l'URL d'un fichier statique (CSS, JS, image) en lui ajoutant un
|
|
// numéro de version basé sur la date de dernière modification du fichier sur le disque.
|
|
//
|
|
// Pourquoi : le navigateur garde les fichiers CSS en cache parfois plusieurs jours, donc un
|
|
// visiteur déjà venu continuait de voir l'ancien style après une mise en ligne (d'où la
|
|
// notice "videz votre cache" affichée sur la page d'accueil). Avec "?v=1756329123" dans
|
|
// l'URL, l'adresse change dès que le fichier change : le navigateur la considère comme une
|
|
// nouvelle ressource et la retélécharge, sans qu'il ait à faire quoi que ce soit. Tant que
|
|
// le fichier ne bouge pas, l'URL reste identique et le cache continue de servir (pas de
|
|
// téléchargement inutile à chaque visite).
|
|
//
|
|
// filemtime plutôt que le hash du dernier commit : ça ne dépend pas de la présence de git
|
|
// sur le serveur, et ça suit aussi les fichiers modifiés directement en production.
|
|
//
|
|
// $chemin : chemin du fichier depuis la racine du site (ex : 'styles/primary_css.css')
|
|
// $prefixe : préfixe à mettre dans le HTML selon l'emplacement de la page qui l'appelle
|
|
// ('../' pour les pages de /pages, './' pour les fichiers à la racine)
|
|
function urlAsset($chemin, $prefixe = '../') {
|
|
$fichier = __DIR__ . '/../' . $chemin;
|
|
|
|
// @ : si le fichier est introuvable on renvoie l'URL sans version plutôt que de
|
|
// provoquer un warning PHP au milieu du <head>
|
|
$version = @filemtime($fichier);
|
|
|
|
if ($version === false) {
|
|
return $prefixe . $chemin;
|
|
}
|
|
|
|
return $prefixe . $chemin . '?v=' . $version;
|
|
}
|