如何减少我网站上的"第一个字节的时间"?

spa*_*kle 16 dns performance

如果你去主页,你会看到在页面加载之前,浏览器等待...

我如何减少第一个字节的时间

在此输入图像描述

AD7*_*six 16

没有你显示负责生成网站内容的代码,没有人可以给你一个详细的答案 - 因为这是延迟的地方.

但是,由于该站点使用的是php,因此您最有可能使用输出缓冲

鉴于这种情况,以下代码将给出(网络延迟+)2s的TTFB:

<?php ob_start(); ?>
<!doctype html>
<html>
    <head>
        <title>Slow to Load, Slow to finish</title>
    </head>
    <body>
    <?php 
        sleep(2); // Simulate slow processing
        echo "Body"
    ?>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然而,这将为您提供(网络延迟+)0s的TTFB:

<!doctype html>
<html>
    <head>
        <title>Fast to load, Slow to finish</title>
    </head>
    <body>
        <?php ob_start(); ?>
        <?php 
            sleep(2); // Simulate slow processing
            echo "Body"
        ?>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在两种情况下加载整个页面的时间都是相同的 - 只有在延迟发生变化的情况下.如果您专注于减少TTFB(为什么),那么应该为您提供足够的信息以进一步调查.

重要提示:在关注TTFB之前,您应该进行许多前端更改.


Adr*_* P. 6

我已经处理了巨大的TTFB(8-10秒),并拼命寻找解决方案。经过搜索并没有成功,我决定仔细研究一下我的PHP代码和数据库索引

输出的缓冲液,降低我的TTFB了一点,但还不够。我再次受到用户的投诉。

真正的问题是服务器处理时间(数据库查询和PHP循环)以及生成HTML源

现在,我建议采取以下步骤:

  1. 看一下数据库索引。确保为返回的“ 所有数据使用正确的索引。使用“ 解释”来验证是否使用了索引,使用了哪个索引以及如何使用它。

就我而言,我返回一个对象数组,并检查了主表的索引。一切看起来都不错,但我忘记了我的对象包括其他表中的其他较小对象。这些表未正确索引。因此,我巨大的TTFB。我只是从8秒更改为2秒,只是将正确的索引添加到正确的表中。

  1. 看一下您的PHP代码。

您可能会有一些循环,可能会导致处理缓慢。您应该使用PHP MVC框架。你的选择。我不会说任何名字。

避免使用此类代码,即使它正在工作。我知道,一些PHP4程序员会说这很好。:)

$query = "SELECT something FROM table";
$result = mysqli_query($mysqli, $query);

if($result) {
    while($row = mysqli_fetch_assoc($result)) {
        $query = "UPDATE other_table SET something_else = "'.$row['something'].'";
        $result2 = mysqli_query($mysqli, $query)
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 注意生成的HTML代码

例如,您通过PHP循环生成Javascript代码。逻辑还可以。加载时间不是。假设您将100行返回到一个表中。对于每一行,您只有5种可能的操作(更改状态,编辑,删除,重复,打印)。这意味着5个jQuery对话框(带有控件的HTML div)和5个JS脚本乘以100行=要在该页面上编写的数千行代码。我的情况是,我4MB的HTML代码上有超过32.000行。在我将所有这些对话框都放在正确的JS函数上之后,从2秒缩短到1秒以下。

总之,(如果您仍在阅读此:))请不要搜索一些魔术功能来减少TTFB。搜索您的代码和数据库。

PS:还有一些其他事情将有助于提高速度:浏览器缓存和压缩,CDN的使用,最小化HTML,CSS和JS,延迟JavaScript的解析,将图像合并为CSS sprites等。使用Google Page speed和Google Audits获得更多性能建议。