PHP 速度优化

3
我对PHP的速度优化很感兴趣。
每次页面加载时,我有一系列文件需要请求。平均而言,大约有20个文件。如果这些文件发生了更改,则必须读取和解析每个文件。这还不包括网页所需的标准文件(HTML、CSS、图像等)。
例如:客户端请求页面->服务器输出HTML、CSS、图像->服务器输出动态内容(20个以上的文件组合和压缩)。
那么,如何以最快的方式提供这些文件呢?

20个PHP文件“合并和压缩”?我读对了吗? - Artefacto
至少你的顺序是错误的。首先是动态 HTML 内容,然后才是 CSS 和图像。 - Your Common Sense
1
请具体说明这些“20个文件”是什么以及它们的用途。 - Gumbo
еңЁдҪҝз”ЁAPCж—¶пјҢжҲ‘еҸ‘зҺ°дәҶдёҖдәӣжңүи¶Јзҡ„дёңиҘҝ...е®ғдјҡзј“еӯҳд»»дҪ•дҪ includeзҡ„ж–Ү件пјҢиҖҢдёҚд»…д»…жҳҜPHPж–Ү件гҖӮиҝҷеҫҲж–№дҫҝпјҢеӣ дёәжҲ‘д»ҺдёҖдёӘж—§зі»з»ҹдёӯincludeдәҶи®ёеӨҡи®Ўж•°еҷЁж–Ү件гҖӮ - Powerlord
4个回答

4

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

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

最后一个可能会出乎意料地远离您所梦想的位置。


首先,对于性能分析,建议使用 xdebug、Firebug 等具体工具。在此基础上,可以给出 +1 的评价。 - Manos Dilaverakis

1

你没有提供足够的信息来做出一个合理的回答。远远最大的好处将来自于内容的有效缓存 - 但你可能需要查看不仅仅是发送的头部,你可能需要开始调整文件名(或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。

0

如果你在谈论 PHP 文件,使用 eAccelerator。如果你在谈论其他文件,请检查 filemtime 看看它们是否已更改,以及是否需要重新解析。

此外,使用 yslow 来确定你的网站为什么很慢。


0

有几种方法可以为PHP文件保留一个操作码缓存,它们会自动检查文件修改。APC是其中我非常喜欢的一种。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接