web-dev-qa-db-fra.com

Désactiver le cache pour un fichier spécifique avec Apache

J'ai une page sur un site qui utilise random() twig, dans Firefox et Chrome il est empêché de fonctionner car il est mis en cache dès le chargement de la page.

Existe-t-il un moyen de désactiver la mise en cache d'un fichier particulier via les configurations Apache, appelons-le default.html ou mieux encore, il suffit de désactiver la mise en cache pour la partie script de ce fichier mais de conserver la mise en cache des fichiers image?

J'ai essayé .htaccess mais cela ne fonctionne pas.

Le seul moyen actuellement permettant au script de fonctionner est de désactiver la mise en cache globalement via les en-têtes PHP:

<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');
?>

Mais comme je n'ai besoin que de désactiver la mise en cache pour une page individuelle, la désactiver pour tout semble fou.

16
Level

Je l'ai compris, pour cibler un fichier spécifique (dans ce cas index.php), ajoutez ce code au bas de .htaccess

<Files index.php>
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</Files>

Alternativement pour cibler une sélection spécifique de fichiers, par exemple. Je voudrais mettre en cache des images mais rien d'autre (fichiers qui correspondent à html, htm, js, css, php ne sera pas mis en cache):

<filesMatch "\.(html|htm|js|css|php)$">
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</filesMatch>

Pour vérifier le .htaccess était en cours de lecture J'ai entré quelques lignes de détritus en bas, j'ai découvert qu'il n'était pas lu, je l'ai renommé de htaccess à .htaccess et cela a fonctionné.

31
Level