我在这里已经回答了 100 多个答案,有很多尝试,没有任何效果??
有一个基于 PHP 的站点。我需要为所有 .php 文件关闭缓存,除了少数几个。
所以,在 .htaccess 中,我有以下内容:
ExpiresActive On
# Eliminate caching for certain dynamic files
<FilesMatch "\.(php|cgi|pl)$">
ExpiresDefault A0
Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
使用 Firebug,我看到以下内容:
Cache-Control no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform
Connection Keep-Alive
Content-Type text/html
Date Sun, 02 Sep 2012 19:22:27 GMT
Expires Sun, 02 Sep 2012 19:22:27 GMT
Keep-Alive timeout=3, max=100
Pragma no-cache
Server Apache
Transfer-Encoding chunked
X-Powered-By PHP/5.2.17
Run Code Online (Sandbox Code Playgroud)
嘿,看起来很棒!
但是,我有几个 .php 页面,我需要一些非常短的缓存。
我认为简单的答案是将它添加到我想要启用缓存的每个 php 页面的最顶部:
<?php header("Cache-Control: max-age=360"); ?>
Run Code Online (Sandbox Code Playgroud)
不。
然后我尝试了上面的各种版本。不。
然后我尝试了元 http-equiv 变体。不。
然后我尝试了 .htaccess 代码的变体以及上述变体,例如将其限制为:
# Eliminate caching for certain dynamic files
<FilesMatch "\.(php|cgi|pl)$">
Header set Cache-Control "no-cache, max-age=0"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
不。
似乎我所做的一切都不会允许使用 .htaccess 代码对单个 .php 进行缓存,而不是完全从 .htaccess 文件中删除语句。
我哪里错了?我该怎么做才能让单个 php 页面可缓存,而其余页面保持关闭?
谢谢你的任何想法。
嗯,显然这没有答案。因此,我此时的解决方案是完全消除 .htaccess 代码,并对每个文件应用显式标头。一种你知道的痛苦,但是时候继续前进了。如果有人有更优雅的解决方案可以使用 .htaccess 默认值,请随时分享...谢谢