Files
2026-08-28 00:04:48 +02:00

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;
}