我正在MAMP中开发单页面Javascript应用程序。我的JavaScript和HTML模板文件正在请求之间缓存。如何防止Apache httpd(MAMP)中的http文件缓存
有没有一种简单的方法可以在MAMP中表明我想阻止http文件缓存?可能与.htaccess
文件?我在哪里可以放置.htaccess
或在Mac上修改MAMP的虚拟主机?
我正在MAMP中开发单页面Javascript应用程序。我的JavaScript和HTML模板文件正在请求之间缓存。如何防止Apache httpd(MAMP)中的http文件缓存
有没有一种简单的方法可以在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%防止文件
这类似于谷歌广告如何使用头缓存控制:私人,x-gzip-ok =“”>来防止代理和客户端对广告进行缓存。
从http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html
还可以选择添加的扩展你,如果你使用的不是.html
那些其他的扩展检索模板文件。
基于这里的例子:http://drupal.org/node/550488
下可能会在.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>
工作,而无需指定mod_expires这将是更难对你的文件设置过期头。对于产生的任何东西,你当然可以设置在回答一些默认的标题,做指定mod_expires像作业:
现在这个韩元:
<?php header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); ?>
(Stack Overflow answer from @brianegge,其中指定mod_expires解决方案还解释取自)不工作的静态文件,就像你的JavaScript文件。至于静态文件,浏览器和源文件之间只有apache(没有任何过期模块)。 为了防止JavaScript文件,这是在您的浏览器做缓存,你可以在JS网址的结尾,像?rd=45642111
使用随机令牌,所以URL看起来像:
<script type="texte/javascript" src="my/url/myjs.js?rd=4221159546">
如果这网页上的网址是由PHP文件生成的,您可以简单地使用PHP添加随机部分。例如,通过简单地附加随机查询字符串参数来随机化网址的方式是基于上层的Ajax jQuery请求的无缓存设置。浏览器永远不会考虑具有不同查询字符串的2个url是相同的,并且永远不会使用缓存版本。
编辑
请注意,您应该阿洛斯测试mod_headers中。如果您有mod_headers,您可以直接使用标题关键字来设置Expires标题。
谢谢,不幸的是我没有使用任何PHP文件。我将研究mod_headers并安装mod_expires。 – dmck 2012-07-25 19:28:21
我有同样的问题,但我在这里找到了一个很好的解决方案: Stop caching for PHP 5.5.3 in MAMP
基本上找到php.ini文件并注释掉OPCache线。 我希望这个替代答案也可以帮助别人。
这是关于服务器端的PHP缓存,又名OPCache。问题是关于通过HTTP请求的浏览器缓存的文件。 – Flion 2016-01-30 17:56:22
谢谢,这在.htaccess文件中工作得很好。当我检查标题时,我可以看到缓存控制选项,并且我的文件在请求之间显示为http 200而不是304,正是我所需要的。 – dmck 2012-07-30 22:26:46
不要忘记添加LoadModule命令。 'LoadModule headers_module lib/modules/mod_headers.so' – Spen 2014-09-22 14:24:40
它在Apache/2.4.12(Ubuntu)中不起作用 – Sarath 2015-04-06 13:55:44