【问题标题】:php output performance impactphp输出性能影响
【发布时间】:2021-08-06 09:27:17
【问题描述】:

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

require_once(PATH_TO_CACHED_FILE);

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

echo 'a';

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

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

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

【问题讨论】:

  • PATH_TO_CACHED_FILE 在里面做什么?
  • 没什么,它是预缓存的 HTML 内容。当我将相同的内容复制到 .php 文件时,加载时间仍然约为 800 毫秒。当我将相同的内容复制到 .html 文件时,加载时间约为 250 毫秒。
  • 看起来您正在将 .php 文件中的一些动态内容添加到 HTML 标记中。
  • 您是否将任何具有大量行的 HTML 表格从后端传递到前端?
  • 实际上没有什么动态的。当我将相同的内容粘贴到 .html 中时,加载时间约为 250 毫秒,当我将其粘贴到 .php 时,加载时间约为 800 毫秒。再次 - 没有动态发生。

标签: php performance nginx


【解决方案1】:

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

没什么,见下文。

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-11-10
    • 2010-10-19
    • 2023-04-01
    • 2016-05-17
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多