Javascript PHP如何不缓存生成的HTML,而是缓存静态数据,如image/js/css
出于显而易见的原因,许多PHP开发人员在他们的PHP页面顶部添加了无缓存头,我也是。由于PHP生成的内容通常是动态的,因此浏览器缓存这些内容会导致向用户呈现过时的数据。为了避免这种情况,通常会禁用缓存Javascript PHP如何不缓存生成的HTML,而是缓存静态数据,如image/js/css,javascript,php,css,image,caching,Javascript,Php,Css,Image,Caching,出于显而易见的原因,许多PHP开发人员在他们的PHP页面顶部添加了无缓存头,我也是。由于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") . " G
<?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文件本身的完全访问权限,那么如何实现这一点呢
或者整个“无缓存”对于动态PHP文件来说是不必要的?即使它们被url重写为看起来没有扩展名 我可能错了,但我相信您可以将所有js和CSS文件放到一个php中,然后使用类似
ob_start ("ob_gzhandler");
ob_start("compress");
因此,您需要一个.php来定义它的头文件,然后在js和css文件以及上面的文件中需要一些
您可能需要一些if语句来获取更改等
我会在几分钟内做出更全面的回答,因为我现在正在打电话
更新 在git上找到了一个资源,我认为这将帮助您走上正确的道路
您可以使用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>
#将图像/pdf文档缓存一周
标题集缓存控制“最大年龄=604800,公共,必须重新验证”
上次修改未设置的标题
#将html/htm/xml/txt diles缓存2天
标题集缓存控制“最大年龄=172800,必须重新验证”
您已经有了标题(“Expires:Mon,1990年7月26日05:00:00 GMT”)代码>对吗?是的,正如我发布的,为什么?对不起,我弄糊涂了。不要介意我的评论!也许是这根线@GillesLesire看看这个也许?我想他知道,他只是想用php来做。是的,我已经这样做了,但感觉很粗糙。我只是想知道是否有一个更干净的方法存在。谢谢,合并这些静态文件将大大加快速度,这也是我正在研究的问题。这可能会一次解决所有这些问题。我一定会调查的。很高兴你的朋友分类。你的解决方案适用于js和css文件,但对于图像,我想我仍然需要使用mohamed amin的解决方案。让我考虑一下图像,然后再与你联系