许多PHP开发人员在他们的PHP页面之上添加no-cache标头,我也是如此,原因显而易见。由于PHP生成的内容通常是动态的,因此让浏览器缓存它们会导致向用户呈现过时的数据。为避免这种情况,通常会禁用缓存。
<?php
//no cache headers
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
问题在于,由于此标头,我的图像,javascript文件和css文件也是静态的,因此可能(并且应该)被缓存,也不会被缓存。这会大大减慢网站的速度。
有没有办法在PHP内容上没有缓存,但仍然缓存了js / images / css?
如果我完全有权修改(linux)服务器配置,HTACCESS,当然还有PHP文件本身,那么如何实现呢?
或者是整个&#34;无缓存的东西&#34;动态PHP文件是不必要的?即使它们被重写为url,也显示无扩展。
答案 0 :(得分:2)
我可能是错的,但我相信你可以把你所有的js和CSS文件放到一个php中,然后用
之类的东西缓存它ob_start ("ob_gzhandler");
ob_start("compress");
所以你会得到一个.php来定义它的标题,然后你的js和css文件以及上面的内容需要一些。
你可能会需要一些if语句来获取更改等。
我现在会在手机上做一些更全面的回答。
<强>更新强>
在git上找到了一个资源,我认为这将有助于您走上正确的道路。
https://github.com/SubZane/CSS-Compressor/blob/master/csscompressor.php
答案 1 :(得分:0)
您可以使用htaccess来定义要缓存的文件 你想要的只是在你网站的主目录中创建一个.htaccess文件并添加这段代码
示例:
# cache images/pdf docs for 1 week
<FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif)$">
Header set Cache-Control "max-age=604800, public, must-revalidate"
Header unset Last-Modified
</FilesMatch>
# cache html/htm/xml/txt diles for 2 days
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=172800, must-revalidate"
</FilesMatch>