是什么导致HTML加载之前的“等待”时间?


12

我有一个网站,加载速度似乎很慢。当我对其进行速度测试时,我发现在HTML加载之前似乎有6秒的间隙。此后,图像和JS脚本的加载速度非常快。

您可以在下面的图片中看到黄色的“等待时间”栏:

HTML文件的加载花费了超过5秒钟的时间,而大多数其他资产的加载时间不到1秒

无论页面上的HTML内容是什么,这似乎都是一致的。

该站点使用的是CMS(ModX Revo),因此HTML实际上存储在SQL数据库中并由PHP带来,但是我以前从未遇到过此问题。

有谁知道这是什么原因以及如何加快速度?


这是新事物吗?也就是说,这些页面之前和现在是否正常运行?还是这是较新的安装/站点?你能告诉我们更多吗?
closetnoc

1
除非有一些中间网络来阻止这种情况,否则这似乎是服务器花费时间来生成响应的时候了吗?您说“不管什么HTML内容”-通过CMS的HTML内容,或者从字面上看是静态HTML页面?如果您还没有的话,我当然会尝试一个简单的“ Hello World”静态HTML页面。还要注意pingdom的服务器在澳大利亚的另一端(我假设是您的托管地)?
怀特先生

1
IMO,问题主要出在一页上-您的服务器/ CMS似乎花费很长时间才能生成响应。低效的SQL查询?您网站上的其他页面似乎相对较快。(?)
怀特先生

Answers:


13

等待的技术术语称为到第一个字节的时间,它确定Web服务器或其他网络资源的响应能力。

一些常见的原因可能导致您看到第一个字节的时间过长:

  • 网络过载(通常为共享主机)
  • 配置错误的服务器
  • 您与服务器之间的距离(地理位置不重要)
  • 服务器错误(跳)

通常,在共享主机中经常会出现此问题,因为网站和访问它们的人数量庞大,这当然会增加网络字节时间。另一个可能的原因是某个地方的网络出现错误,例如跃点,或者是因为您的服务器不在目标受众的位置,例如,“ GOOD”英国服务器的字节时间比美国服务器针对目标用户的字节时间短。英国,因为需要发送和接收数据的距离较远(通常会增加100-200ms)。

也许是时候找一个新主人

过去,由于到第一个字节的时间滞后,我不得不从一个服务器移到另一个服务器,您可能不得不选择一个新的Web主机或升级当前软件包。

可靠的测试

从家庭宽带测试网站的速度非常有偏差,因为这可能是您的宽带无法响应网站的问题。您应该使用来自多个服务器的多个连接来测试您的网站...我建议您进行网页测试,并同时在不同的地理位置和目标地理位置的受众中同时运行多个测试。这将使您对发生的事情有更好的了解,如果它的第一个字节,那么我建议您先与Web主机联系。

对服务器执行ping和跟踪路由

如果尝试在服务器上运行ping,则结果可能不会显示或不显示,但ping使用ICMP而不是UDP或TCP,这意味着它不像在运行httpd的端口80上查询服务器。您可以使用跟踪路由来识别该路由上可能导致第一个字节增加的任何服务器,再次...它不会查询端口80上的httpd服务器,如果使用Windows的traceroute它将使用ICMP和Mac / Linux机器将使用UDP。值得进行测试,因为它的操作如此简便快捷,但是如果结果恢复正常,则不一定意味着某个地方没有问题。


@SunWKim大家好,我已经用您的要求更新了答案。看我的答案的底部。
西蒙·海特

我同意您通常需要第一个字节的原因。在这种情况下,我相信它与JavaScript代码有更多关系。
太阳

第一个字节可能由多种因素引起,但JavaScript并不是其中的一种,因为标头响应位于内联元素(如JavaScript,CSS,Images等)之前。实际元素和文件..不要混淆第一个字节
西蒙艾泰

我不会混淆两者。也许如果您访问了mbff.com.au并亲眼目睹了这一事实,那么您可能会相信,这不是第一个字节的时间问题。延迟发生在第一个标头响应之后。
太阳

1
The delay is occurring after the first header response那不是第一个字节。第一个字节是第一个响应。
西蒙·海特

4

1)您有Adobe TypeKit,它不会与当前代码异步加载。尝试用高级异步代码替换它:http : //help.typekit.com/customer/portal/articles/649336-embed-code

该标准嵌入代码利用了以下事实:标签会阻止页面的进一步呈现,以帮助防止FOUT [Unstyled Text的闪烁]。加载Typekit脚本时,页面的呈现被阻止,因此文本不会开始使用后备字体呈现。

2)使用新的TypeKit进行测试。现在的加载时间如何?更好?转到步骤3。

3)用提供最新异步语法的更新JavaScript替换您的Google Analytics(分析):https : //developers.google.com/analytics/devguides/collection/gajs/

4)测试。页面加载是否更好?

5)最后,考虑优化图像,例如pattern.jpg。我将其转换为PNG,并能够将文件大小从199kB减小到56kB。这样可以减少接收文件的时间:https : //www.dropbox.com/s/i06jx509bmprhhh/pattern.png?dl=0

我希望这有帮助。


3

PHP与非PHP元素

如果将非PHP资产的加载时间与基于PHP的加载时间进行比较,则会发现如果不涉及PHP,则服务器会快速响应。

这通常表明您的PHP脚本内部存在问题。

问题可能出在PHP层或数据库内。使用XDebug或NewRelic等高级调试工具可以帮助您快速发现瓶颈。

到第一个字节的时间可能是由硬件限制,配置不佳或代码效率低引起的。在共享主机上,最有可能出现硬件限制和配置错误。

无论如何,解决问题通常意味着以下一项或全部:

  • 更多硬件
  • 更好的编程
  • 添加缓存

如果您已经使用了专用资源,则更快的硬件是显而易见的解决方案,但通常会花费很多。

如果问题是您不维护或缺乏开发人员资源的内部原因,则可能无法进行更好的编程。

缓存有助于减少必须到达基础性能不佳的资源的请求数量。

测试中

使用测试工具时,请确保进行多次运行。网络高峰和临时服务器高峰很容易使您误入歧途,因此您希望尝试对这些高峰进行平均。

代管

如果您使用共享主机帐户,则可以考虑迁移到云或VPS类型的服务,以便对性能问题有更深入的了解。除非您使用缓存技术(CDN或Cloudflare类型的服务),否则由于缺乏对服务器的充分控制,更正大容量共享主机系统上的性能问题可能非常具有挑战性。


-1

尝试将第三方Cookie设置为仅已访问。

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.