我正在MAMP中开发一个单页面的Javascript应用程序。我的JavaScript和HTML模板文件在请求之间被缓存了。
是否有一种简单的方法可以在MAMP中指示我要防止http文件缓存?可能需要使用.htaccess
文件吗?我应该将.htaccess
文件放在哪里或者如何修改Mac上MAMP的虚拟主机?
我正在MAMP中开发一个单页面的Javascript应用程序。我的JavaScript和HTML模板文件在请求之间被缓存了。
是否有一种简单的方法可以在MAMP中指示我要防止http文件缓存?可能需要使用.htaccess
文件吗?我应该将.htaccess
文件放在哪里或者如何修改Mac上MAMP的虚拟主机?
试过这个了吗?应该适用于.htaccess
、httpd.conf
和VirtualHost
(通常放置在httpd-vhosts.conf
中,如果您已从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%防止文件被缓存
这类似于Google广告如何使用头部Cache-Control:private,x-gzip-ok =“”>来防止代理和客户端缓存广告。
来自http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html
如果您在获取模板文件时使用的扩展名不是.html
,可以选择添加该扩展名。
<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>
<IfModule mod_expires.c>
和</IfModule>
部分...这样,您将会收到一个错误而不是那些指令被静默忽略。 - Stennie我以前也遇到了同样的问题,但是在这里找到了一个好的解决方法。
基本上是找到php.ini文件并注释掉OPCache行。希望这个替代方案也能帮助其他人。
<?php header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); ?>
以下内容翻译自Stack Overflow用户@brianegge的回答(该回答还介绍了mod_expires解决方案):
对于静态文件,比如JavaScript文件,此方法无效。由于浏览器与源文件之间只有Apache(没有任何过期模块),因此需要使用类似于?rd=45642111
的随机标记来避免缓存JavaScript文件,从而使url类似于:
<script type="texte/javascript" src="my/url/myjs.js?rd=4221159546">
<FilesMatch "\.(js|css)$">
ExpiresActive On
ExpiresDefault A1
Header append Cache-Control must-revalidate
</FilesMatch>
A1
而不是A0
或者甚至是M0
,因为它们都是静态资源? - MrWhite
LoadModule headers_module lib/modules/mod_headers.so
- Spenhouet<filesMatch "\.+">
或者<filesMatch ^>
。 - Charlie Rudenstål