自从我不得不在 OB 上使用 zlib 压缩以来已经很久了(稍后会详细说明原因)。但是,让我尝试说服您在 PHP 中关闭 OB 上的 zlib 压缩。首先,有一点背景,以确保我们在同一页面上。
OB是如何工作的
每次 php 打印一些东西,如果没有 OB,它将直接发送到 apache 并从 apache 发送到浏览器。相反,使用 OB,输出在 apache 处停止并等待数据刷新(到浏览器)或脚本结束并自动刷新数据。通过将 Apache 缓冲到进程的 Web 浏览器阶段来生成页面时,这可以节省大量时间和资源。
为什么不在 PHP 中使用 OB 压缩
为什么要让 PHP 压缩它?执行此类任务(以及压缩 js 文件)应该是服务器的工作。为了彻底释放 apache 来处理 php,您“应该”做的是将 NGINX 安装为公众面前。设置为反向代理非常容易,您甚至可以将其安装在与 php 和 apache 相同的服务器上。
所以将 NGINX 设置在 80 端口上,将 apache 设置在 8080 上(并且只允许 nginx 连接,但如果您将其公开一段时间,请不要担心,因为它已经公开并且非常适合调试绕过 nginx,所以没有安全问题应该上升-但我建议您不要将其公开太久)。然后使 nginx 反向代理到 apache,缓存所有从 apache 卸载的静态文件(因为 nginx 代替它们服务)意味着 apache 可以执行更多 php 请求,并让 nginx 执行 OUTPUT COMPRESSION ;) 释放 apache 和 php 甚至更多的请求。作为一个额外的好处,nginx 还可以比 Apache 更快地提供静态文件,并且 Nginx 也使用更少的内存并且可以处理更多的连接。
即使是 nginx 新手也可以在在线阅读一些教程并在 1 天内完成我刚才说的所有内容后进行 nginx 设置。1 天也度过了愉快的时光。
但是请记住将 PHP 到 Apache 的输出缓冲保持打开,但在 PHP 上关闭 zlib 压缩并在 nginx 上启用它。