首先,我们来看下网页的加载流程。打开一个网页,会先拉取一个html页面,然后浏览器解析了这个html页面后,会根据页面的内容,去拉取javascript、css和图片文件,终极根据这些文件,将页面渲染出来。
我们可以看到,影响一个网页展示速度的主要因素不是网页本身,而是它依靠的一些其它文件。假如优化了这些资源的加载速度,那么网页展示的速度也就上去了。
有哪些方法能够提高网站打开速度?让我来逐一列举:
1.压缩css和js内容 这里说的压缩和第2点并不重复,上面提到的压缩是不改变文件内容的压缩。而css和js中有大量的空格和变量命名(如hello="hello word";),假如将这些空格去除,并用简朴的字母来代换变量名(如a="hello word";),那么这些css和js原文件的大小也会缩小,这样也对加快拉取速度是有匡助的。
2.优化图片资源的格局和大小
一个网页中,图片资源的大小占比是最多的,而且单个的文件的大小也很可观。因此,在保证图片质量不变的情况下,尽可能的使用高压缩率的图片格局,图片格局可以按照这个优先级选择webp > jpeg > png > bmp。同时也要根据图片展示尺寸来拉取大小最为匹配的图片资源,不要没事就把原图拉下来使用。以前我就碰到过这种情况,一个196*196大小区域展示的图片,它的文件竟然达到了几兆,最后才发现把1960*1960分辨率的原图拉下来了。
3.减少DNS查询次数
良多人喜欢把不同的图片挂在不同当域名下,好比说图片A挂在a.pm-teacher.com,图片B挂在b.pm-teacher.com。当一个网页同时使用图片A和图片B时,浏览器需要查询两个域名,要知道,每次解析域名都是会铺张时间的,所以尽可能的将全部图片放在一个域名下。
4.减少重定向哀求
有的网站对于不同的终端制作了不同的页面,好比说在手机上访问微博,会从weibo.com重定向至weibo.cn,每一次重定向都会导致浏览器重新发起哀求,延长加载时间。对于这种情况,应该尽可能使用响应式设计,一个weibo.com站点笼盖至所有终端。
5.开启网络压缩
大部门浏览器在发出哀求时,会带上这个标记「Accept-Encoding: gzip, deflate」,表示这个浏览器可以接受以gzip压缩方式传输数据,假如你的网页服务器也支持gzip压缩数据,那么数据以gzip方式传输时,会减少70~80%的流量
6.使用CDN存储静态资源
CDN是一种静态内容分发网络,它在每个省,甚至每个城市都部署有自己的服务器,用于分发这些静态内容,那么当某个城市的用户要拉取某个资源时,他会首选从本地的CDN服务器上拉取,这样可以保证他最快速的获得该资源。据砖家统计,网络资源中有70%的是静态资源。这就意味着,有70%的内容产生后是不会变化,那么将它们全部放在CDN上面,可以晋升这70%的资源的下载速度。
7.使用浏览器缓存
统一个站点下面的不同页面,往往都会复用一部门资源文件,假如把这些资源文件设置为可缓存的,那么在刷新或者跳转到另一个页面时,都无须再从网络拉取相关资源,这样就大大加快了网页的加载速度。
不知道你有没有看出来,上面提到的优化方案的核心就3点:减少哀求数、减少资源大小、找最快的服务器。假如你是一个网站的产品经理,快去找你们的开发确认是否有做过类似的优化吧。