前几天有位粉丝给我私信说我的博客打开太卡了,问我是什么原因?当时我就在想我的博客是静态网页,怎么会打开速度这么慢呢?(理论上静态网页会比动态网页加载速度快)
我马上去Google开发的PageSpeed Insights去测了下自己博客的打开速度,不测不知道一测吓一跳,原来我的博客打开速度确实很慢,下面给大家分析分析网页打开慢的具体原因。
页面加载慢的主要原因通过PageSpeed Insights的建议可以发现造成网页打开速度慢的主要原因还是图片太大,加载速度较慢。
找到了原因我们就开始整吧。首先我们能想到的就是缩小图片的大小,图片大小变小了加载速度自然就会变快。(这里的大小可不是图片的尺寸大小哦)
经过网上查阅资料学习到有种专门用于web端的图片格式webp,WebP 是谷歌即将推出的适合于 Web 使用的图像格式,在保持同样质量的情况下,可比 JPG 减小 40% 的体积。
所以我就使用格式工厂把图片的格式转换了一下,文件的大小确实缩小了不小。
下面是改过图片格式后的评分,评分确实提高了,但是还是黄色的,所以肯定还是可以继续优化的。
虽然上面的方法可以在一定程度上可以缩小一下文件大小,但是并不能从根本上改善网页加载慢的问题,所以我们继续排查原因
分布式存我们知道,无论对于Apache还是IIS,图片始终是最消耗系统资源的,如果将图片服务和应用服务放在同一个服务器的话,应用服务器很容易会因为图片的高I/O负载而崩溃,因此对于有些大型网站项目,我们有必要将图片服务器和应用服务器分离。
PS:当一个网页被浏览时,Web服务器与浏览器建立连接,每个连接表示一个并发。当页面包含多个图片时,Web服务器与浏览器会产生多个连接,同时发送文字和图片以提高浏览速度。因此,页面中图片越多Web服务器受到的压力也就越大。同时由于受到浏览器本身的并发连接数限制(2个~6个并发),意味着页面上有多于并发连接数限制的图片时,也不能并行地把所有图片同时下载和显示。
由于图片保存在物理服务器上,访问图片需要频繁进行I/O操作:因此当并发用户数越来越多时,I/O操作就会成为整个系统的性能瓶颈;
由于受操作系统的限制,一个目录中能存放的图片文件数量也是有限的:随着图片资源不断增加,如何有效管理和维护图片也是一个难题;
因此我们可以选择将图片和网页程序进行分开储存,比如使用
性能测试(以下数据来源于论文:海量图片的分布式存储及负载均衡研究)
在局域网环境下对采用图片服务器和不采用图片服务器2种情况进行了性能测试:测试数据有300万张图片均匀分布在3台图片服务器上,每台图片服务器建立1000个子目录。
在5台客户端上同时运行压力测试软件,分别模拟200个~1 000个并发用户的请求。其测试结果如下图所示:
从图中可以看出,采用3台普通PC机作为图片服务器后,整个系统的响应时间大大减少,性能得到明显提升,而且并发访问量越大,性能的提升越明显,而对于整个系统而言增加的硬件成本却很有限。
以上就是关于我博客访问慢的主要原因,当然原因还有js加载慢等原因。如果大家有想要自己建博客的话可以加我好友一起交流学习。
其他原因另外再给大家安利几点可能造成网站加载速度慢的原因:
1、带宽不足首先想到的就是自己网速的问题,但是一般网速在1M以上的,打开网页一般不会是很慢的。网站服务器的带宽不够的话,当大量用户访问的时候,网页的加载也是很慢的,这就是网络的出口端和入口端两个方面。
2、硬件配置低本机的配置也会是一方面的,但是只要不是老赛扬单核+512M的配置,一般不会是电脑配置的问题。服务器端的配置也是同样的道理。
CPU或者是内存被占满的时候,打开网页是会很慢的,因为整个电脑都很慢。
3、DNS解析慢域名的解析是需要专门的域名解析服务器来完成的,DNS解析包括往复解析的次数及每次解析所花费的时间,它们两者的积即是DNS解析所耗费的总时间,在http请求的过程中,域名解析和建立连接占的时间很多。
4、JS阻塞请求写的js代码出现问题,解析就会花费很长时间,这两个js请求之间会出现一个很大的空隙,就会导致这段时间的资源加载都被阻塞住。
5、接受数据时间过长http请求的大部分时间应该花在后面几个阶段,比如等待响应和接收数据。但是,如果接收数据的时间太长了,长到数百毫秒甚至以秒计算的时候,那也是有问题的。这种情况一般是因为下载的内容太重了,例如大图片、大脚本等。这类问题可以使用GZIP压缩、图片压缩或者JS/CSS的minify等手段来解决。
6、加载某个资源太慢如果某个请求比其他的请求多出很多的时间,那么一般情况就是某个资源的加载太慢,导致了整个网页变慢,原因有可能是1)资源在第三方站点上,他们很慢;2)这个资源太大了;3)这个资源使用的域名有问题。
7、后端代码问题主要有代码冗余、数据库发生锁死、动态请求时间过长等,这就需要RD优化一切可以优化的东西了。
8、前端页面请求的资源过多onload之前如果有几百行,速度自然会慢的,如果请求的资源不存在,那么速度将会更慢网页本身中包含了追踪或者是分析用户的工具,从而导致网页的加载时间变长,比如之前海盗湾中会给用户的电脑插入挖矿的js脚本等。
以上就是本篇关于网站加载速度慢的主要原因,以及优化建议,大家如果建立个人博客的话可以尝试测试下自己网站在PageSpeed Insights并根据得分建议进行优化。
点击下方公众号卡片获取资料


