php 输出性能影响

时间:2021-05-17 05:03:42

标签: php performance nginx

我正在进行页面缓存,我正在尝试缩短服务器响应时间,当我通过 php 抓取缓存的页面内容时,无论出于何种原因,将其输出到浏览器需要大约 800 毫秒。

require_once(PATH_TO_CACHED_FILE);

当我复制完全相同的内容并将其放入 .html 文件时,我在大约 250 毫秒内在浏览器中获得了相同的内容。 当我将上面的 require_once 切换到这个 =>

时,我也得到了大约 250 毫秒
echo 'a';

所以考虑到所有这些 - 我认为这可能与缓冲区大小有关,因为缓冲区越大输出它所需的时间越长)?对?我的意思是 - 这是一个巨大的差异 - 为了或多或少地匹配通过 php 输出内容与简单加载 html,因为这两个文件几乎做同样的事情(抓取内容/推送到浏览器),可以做什么? 谢谢!

顺便说一句:我还测试了将输出复制到 .php 文件(所以它只是回显了缓存的 HTML,此文件中没有进行任何计算)并且它仍然需要大约 800 毫秒——如何简单地将扩展名从 .php 更改为 .php? php 到 .html 有 500 毫秒的差异?

btw2:不确定是否重要,php 在 nginx 上

1 个答案:

答案 0 :(得分:0)

<块引用>

为了使通过 php 输出内容与简单加载 html 或多或少匹配,因为这两个文件几乎做同样的事情(抓取内容/推送到浏览器),我们可以做什么?

没什么,见下文。

<块引用>

如何简单地将扩展名从 .php 更改为 .html 会产生 500 毫秒的差异?

与简单的 HTML 访问相比,PHP/PHP-FPM 脚本引擎非常繁重,因为它必须(可能基于当前状态)派生一个工作进程,进行必要的引导,加载模块(如果没有),解析脚本,即使在您require编写的简单 HTML 中,它也必须解析它并查找 <?php 标记以进行处理。

直接访问 HTML,不涉及 PHP 引擎。如果您只是直接链接/访问您的 HTML 文件,则上述情况都不会发生。

除此之外,如果您在 PHP 端使用 zlib,缓冲也可能是一个问题。

如果您必须坚持使用某些父 PHP 代码来提供缓存 HTML 文件,那么尝试使用 readfile 代替 require 可能是有意义的,因为前者不会以解析文件内容为 PHP 标签。

否则,如果您已经拥有完整的 HTML 文件(如在整页缓存中),最好的方法是完全避免对它们进行 PHP 调用。这可以通过使用 NGINX(或您选择的网络服务器)重写以根据它们的存在将请求直接路由到 HTML 缓存文件来实现(例如,对于 NGINX,这可以使用 try_files 指令实现)。