Forcer un navigateur à récupérer un fichier Internet

Lors de la consultation de site sur Internet, le navigateur Internet (dit aussi « butineur ») met en cache des informations pour accélérer l’affichage d’un site lors d’une prochaine visite.
Il est aussi possible de toucher à la configuration de son serveur web (dans mon cas Apache) en activant et configurant le module « mod_expires ». Ce module permet de définir quel type de fichier est éligible à la mise en cache chez le client ainsi que la durée de conservation.

Oui mais voilà, malgré mes réglages côté serveur, la mise en cache se produit toujours de la même manière. Et n’est pas possible de toucher à la configuration côté client pour tout le monde …

Voici donc une petite alternative pour forcer le rechargement. Ici, on rajoute un morceau de chaine de caractères généré automatiquement au nom du fichier à télécharger. Le contenu du fichier restera le même, seule l’adresse va changer et passera de « http://127.0.0.1/mon_fichier.js » en « http://127.0.0.1/mon_fichier.js?ver=1338742725 ». Le numéro 1338742725 changera si une modification de contenu est faite sur le fichier, car la fonction PHP « filemtime » récupère la date de dernière modification du fichier.

Voici un exemple de mise en place de ce système dans une page PHP.

<!DOCTYPE html>

<html lang="fr">

	<head>
		<title>Exemple</title>
		<meta charset="utf-8" />
	</head>

	<body>
		<div>
			<h1>Mes fichiers</h1>
			<ul>
				<li><?php echo '<a href="mon_fichier.js?ver='.filemtime("./mon_fichier.js").'">'; ?>Mon fichier</a></li>
			</ul>
		</div>
	</body>

</html>