Je développe une application Javascript d'une seule page dans MAMP. Mes fichiers de modèle JavaScript et HTML sont mis en cache entre les demandes.
Existe-t-il un moyen simple d'indiquer dans MAMP que je souhaite empêcher la mise en cache de fichiers http? Peut-être avec un fichier .htaccess
? Où puis-je placer le .htaccess
ou modifier l'hôte virtuel pour MAMP sur Mac?
J'ai essayé ça? Devrait fonctionner dans .htaccess
, httpd.conf
et dans un VirtualHost
(généralement placé dans httpd-vhosts.conf
si vous l'avez inclus à partir de votre httpd.conf)
<filesMatch "\.(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
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"
</ifModule>
</filesMatch>
100% Empêcher la mise en cache des fichiers
Ceci est similaire à la façon dont les annonces Google utilisent l'en-tête Cache-Control: private, x-gzip-ok = ""> pour empêcher la mise en cache des annonces par les mandataires et les clients.
De http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html
Et éventuellement ajouter l'extension pour les fichiers de modèle que vous récupérez si vous utilisez une extension autre que .html
pour ceux-ci.
Basé sur l'exemple ici: http://drupal.org/node/550488
Ce qui suit fonctionnera probablement dans .htaccess
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On
# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600
<FilesMatch (\.js|\.html)$>
ExpiresActive Off
</FilesMatch>
</IfModule>
J'ai eu le même problème, mais j'ai trouvé une bonne solution ici: Arrêtez la mise en cache pour PHP 5.5.3 dans MAMP
Recherchez le fichier php.ini et commentez les lignes OPCache. J'espère que cette réponse alternative aide également les autres.
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, faisant ainsi le travail de mod_expires:
<?php header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); ?>
(extrait de: réponse Stool 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. En ce qui concerne les fichiers statiques, il n'y a qu'Apache (sans module d'expiration) entre le navigateur et le fichier source. Pour empêcher la mise en cache des fichiers javascript, comme cela est fait sur votre navigateur, vous pouvez utiliser un jeton aléatoire à la fin de l'URL du fichier js, quelque chose comme ?rd=45642111
, l'URL ressemble à ceci:
<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 les URL en ajoutant simplement des paramètres de chaîne de requête aléatoires constitue par exemple le paramètre de base de la requête ajax jQuery. Le navigateur ne considérera jamais que deux URL ayant différentes chaînes de requête sont identiques, et n'utilisera jamais la version mise en cache.
EDIT
Notez que vous devriez également tester mod_headers . Si vous avez mod_headers, vous pouvez peut-être définir les en-têtes Expires directement avec le mot clé Header .