如何减少等待时间(ttfb)


113

我有一个查询,涉及根据创建时间从表中以排序的顺序获取用户列表。我从chrome开发人员工具中获得了以下时序图。

从铬开始

您会看到TTFB(至第一个字节的时间)过高。
我不确定是否是因为SQL排序。如果那是原因,那我该如何减少时间呢?
还是因为TTFB。我看到博客上说TTFB应该更短(<1秒)。但对我来说,它显示> 1秒。是因为我的查询还是其他原因?
我不确定如何减少此时间。
我正在使用角度。我应该使用angular对表进行排序而不是对SQL进行排序吗?(许多帖子都说这不应该成为问题)
我想知道的是如何减少TTFB。伙计们!我实际上是新来的。这是我的团队成员给我的任务。我不确定如何减少TTFB时间。我看到了很多帖子,但无法正确理解。什么是TTFB。是服务器花费的时间吗?


8
您的问题表明对这里发生的事情缺乏了解。这是等待服务器的时间,因此无论您使用AngularJS还是其他框架都是无关紧要的。如果您想改善服务器端代码,则实际上必须向我们展示代码。
2015年

@govindpatel,如果我的以下回答对您有所帮助,或者您认为它回答了问题,请标记为正确的答案;)
Daniel T. Sobrosa

对于简单的表排序(假设已经获取了表数据,而您只是通过不同的属性对数据进行了重新排序),在客户端进行此操作要比发出另一个对已排序数据的请求要快得多。
Richik SC

Answers:


115

TTFB不是到达响应正文的第一个字节的时间(即有用的数据,例如:json,xml等),而是从服务器接收到响应的第一个字节的时间。该字节是响应头的开始。

例如,如果服务器在完成艰苦的工作之前先发送标头(例如繁重的SQL),您将获得一个非常低的TTFB,但这不是“ true”。

在您的情况下,TTFB表示您在服务器上处理数据所花费的时间。

为了减少TTFB,您需要更快地完成服务器端的工作。


2
为了进一步诊断TTFB期间发生的计时,您可以使用服务器端计时方法(例如,设置计时器或调试日志)来调试在每个逻辑上花费的时间。
Raptor

1
看看这篇文章,它解释了问题的详细信息,并给出可能的解决方案建议:websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM

小心处理TTFB作为最重要的一点:blog.cloudflare.com/...
欧文布莱克

如果此答案对您有帮助,请@govindpatel,请将其标记为正确的回答;)
Daniel T. Sobrosa

16

我遇到了同样的问题。我的项目正在本地服务器上运行。我检查了我的PHP代码。

$db = mysqli_connect('localhost', 'root', 'root', 'smart');

localhost用来连接到本地数据库。那可能就是您要描述的问题的原因。您可以修改您的HOSTS文件。添加行

127.0.0.1 localhost


5
谢谢。我将localhost(TTFB:1s)更改为127.0.0.1(TTFB:12ms)
黑色先生

就我而言,这个答案也有帮助:TTFB 2,39 s-> TTFB 110 ms。为什么有人反对呢?
Martin Pabst

我认为这对于我的Spring-Boot应用程序也已修复,我在Docker-Container中使用Postgres数据库,TTFB最多10s,现在只有40ms :)
Sepultura,

为什么“ localhost”需要这么长时间?
showdev

14

TTFB是幕后发生的事情。您的浏览器不了解幕后发生的事情。

您需要查看正在运行的查询以及网站如何连接到服务器。

文章可能有助于理解TTFB,但除此之外,你需要深入了解你的应用程序。


4

我建议您阅读本文,并集中精力于如何优化对用户请求(页面,搜索结果等)的总体响应。

一个很好的论据是他们给出的使用gzip压缩页面的示例。即使不压缩时ttfb速度更快,但用户的整体体验最差,因为下载未压缩的内容需要花费更长的时间。


请务必查看该文章的评论部分。许多人给出令人信服的理由来关注TTFB。
Zack Macomber '18年

4

如果您使用的是PHP,请尝试使用<?php flush(); ?>after </head>,before </body>或您想快速输出的任何部分(例如标题或内容)。它将输出实际的代码,而无需等待php结束。不要一直使用此功能,否则速度提升不会很明显。

更多信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.