我正在将我网站的主页面缓存为平面html文件,如果用户未登录,则使用.htaccess加载该文件(因为没有显示用户特定信息),而不是加载我的整个php框架。
这样做的一个缺点是PHP不会自动gzip文件,因为PHP甚至没有被使用,因为它只是一个由浏览器加载的普通html文件。
我试过了:
$html = gzencode($html);
$fp = fopen($cachefile, 'w');
fwrite($fp, $html);
但是当文件网址在浏览器中加载时,它只是一堆奇怪的字符。
编辑:我想一个简单的解决方案是将文件保存为.php而不是html,这样php ob_gzhandler压缩文件。我想知道是否通过提供已经gzip并完全跳过php的html来获得性能提升..
答案 0 :(得分:1)
更新:正如OP发现的那样,ob_gzhandler()
可以处理这种用例,并且不是一种糟糕的方法。
原始答案:即使您设法以某种方式进行此项工作,也可能会导致性能下降,而不仅仅是将文件作为文件系统上的纯文本文件。
如果你想利用gzip压缩,请让Apache使用mod_deflate。存储未压缩的文件。 Apache将处理压缩问题。
但在你完成设置之前遇到任何麻烦:这个文件有多大?如果它不是一个非常大的HTML文件,那么每次事务必须解压缩文件的开销可能会超过实际压缩的好处。你真的只看到非常大的HTML文件的好处,这些文件可能会导致浏览器戛然而止。
所有这一切,您可以使用gzdecode()
来解压缩文件,但是您没有提供静态文件 - 您在提供之前通过PHP运行它。同样,对于这个用例,你最好的选择可能只是提供直接的HTML而不是压缩压缩。