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

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



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

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

谁会知道是什么原因造成的,以及如何加快速度?

评论

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

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

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

#1 楼

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

由于一些常见原因,您可能会花很多时间来写第一个字节:


网络过载(通常是共享主机)
配置错误的服务器
您与服务器之间的距离(地理位置的影响很小)
服务器错误(跳)

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

也许是时候获得一个新主机了

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

可靠的测试

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

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

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

评论


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

–西蒙·海特(Simon Hayter)♦
2014年9月11日11:46在

我同意您花时间到第一个字节的常见原因。在这种情况下,我相信它与JavaScript代码有更多关系。

–太阳
2014年9月11日17:16

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

–西蒙·海特(Simon Hayter)♦
2014年9月12日在8:58



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

–太阳
2014年9月12日下午16:54

延迟发生在第一个标头响应之后,而不是第一个字节。第一个字节是第一个响应。

–西蒙·海特(Simon Hayter)♦
2014年9月13日上午10:20

#2 楼

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


此标准嵌入代码利用
标签阻止进一步呈现页面的事实,以帮助防止FOUT
[无样式文本闪烁]。加载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类型的服务),否则由于缺乏对服务器的充分控制,更正大容量共享主机系统上的性能问题可能会非常具有挑战性。

#4 楼

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