Sans mod_expires, il sera plus difficile de définir des en-têtes d'expiration sur vos fichiers. Pour tout ce qui est généré, vous pouvez certainement définir des en-têtes par défaut sur la réponse, en faisant le travail de mod_expires comme ça:
<?php header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); ?>
(extrait de: réponse Stack Overflow de @brianegge , où la solution mod_expires est également expliquée)
Maintenant, cela ne fonctionnera pas pour les fichiers statiques , comme vos fichiers javascript. Quant aux fichiers statiques, il n'y a qu'apache (sans aucun module d'expiration) entre le navigateur et le fichier source. Pour empêcher la mise en cache des fichiers javascript, ce qui se fait sur votre navigateur, vous pouvez utiliser un jeton aléatoire à la fin de l'url js, quelque chose comme ?rd=45642111
, de sorte que l'URL ressemble à:
<script type="texte/javascript" src="my/url/myjs.js?rd=4221159546">
Si cette URL sur la page est générée par un fichier PHP, vous pouvez simplement ajouter la partie aléatoire avec PHP. Cette façon de randomiser l'url en ajoutant simplement des paramètres de chaîne de requête aléatoires est la base du paramètre no-cache de la requête ajax jQuery par exemple. Le navigateur ne considérera jamais que 2 URL ayant des chaînes de requête différentes sont identiques et n'utilisera jamais la version mise en cache.
ÉDITER
Notez que vous devez également tester les mod_headers . Si vous avez mod_headers, vous pouvez peut-être définir les en-têtes Expires directement avec le mot-clé Header .
LoadModule headers_module lib/modules/mod_headers.so
<filesMatch "\.+">
ou<filesMatch ^>