代码之家  ›  专栏  ›  技术社区  ›  Petah

PHP速度优化

  •  3
  • Petah  · 技术社区  · 16 年前

    我想知道PHP中的速度优化。

    我有一系列的文件在每次页面加载时都被请求。平均有20个文件。如果每个文件已更改,则必须读取已分析的文件。这不包括网页所需的标准文件(HTML、CSS、图像等)。

    例如->客户机请求页->服务器输出HTML、CSS、图像->服务器输出动态内容(组合和缩小20个+/-文件)。

    如何尽可能快地提供这些文件?

    4 回复  |  直到 16 年前
        1
  •  4
  •   Your Common Sense    16 年前

    在考虑速度优化之前,我们应该考虑 profiling 由两部分组成:

    • 决定是否需要任何速度优化。
    • 如果是这样-确定我们的应用程序中某些成为“瓶颈”并需要优化的部分, 不同于其他部分 .

    最后一个可以令人惊奇地躺在离你梦寐以求的地方很远的地方。

        2
  •  1
  •   Community Mohan Dere    9 年前

    您在这里提供的信息不足,无法作出明智的回答。到目前为止,最大的好处将来自对内容的有效缓存——但您可能需要查看的不仅仅是正在发送的标题——您可能需要开始调整文件名(或URL的查询部分),以有效地允许浏览器使用新的内容来代替缓存(而不是过期)的内容。

    我有一系列的文件在每次页面加载时都被请求。平均有20个文件。

    这些是 全部的 PHP脚本?它们都被HTML页面引用了吗?

    如果每个文件已更改,则必须读取已分析的文件

    您的意思是必须在服务器上读取和解析它们吗?为什么?读 this post 有关如何标识和提供可缓存静态内容的新版本的详细信息。

    您看过服务器端缓存吗?这并不难:

    <?php
    
        $cached=md5($_SERVER['REQUEST_URI']);
        $lastmod=time() - @mtime($cache_dir . $cached)
        if ((file_exists($cache_dir . $cached)) && (60 < $lastmod)) {
           print file_get_contents($cache_dir . $cached);
           exit;
        } else {
           ob_start();
       ... do slow expensive stuff
           $output=ob_get_contents();
           print $output;
           file_put_contents($output, $cache_dir . $cached);
        }
    ?>
    

    请注意,服务器端缓存几乎没有客户端缓存有效。

    一旦您获得了最佳的缓存,那么您需要考虑从多个主机名为您的内容提供服务——即使它们都指向同一个服务器——浏览器限制了它与每个主机名之间的连接数。 主机名 因此,当请求可以并行运行时,它们会有效地排队。

    为了进一步解决您的问题,我们需要了解更多关于您的应用程序的信息。

    C.

        3
  •  0
  •   Sjoerd    16 年前

    如果您谈论的是PHP文件,请使用eaccelerator。如果您谈论的是其他文件,请检查filemtime以查看它们是否已更改,以及是否必须再次分析它们。

    此外,使用 yslow 以确定您的网站速度慢的原因。

        4
  •  0
  •   Wrikken    16 年前

    有几种保存PHP文件操作码缓存的方法,可以自动检查文件修改。 APC 是我非常喜欢的。