所谓知己知彼百战不殆,所以想要优化它我们需要先了解它
发生了什么,我们如何应对
有一个很常见的问题,从我们在 search 栏输入 baidu.com 到页面展示出来,发生了什么
-
DNS 查询,获取 IP DNS 是我们从电信那里购买的服务,这一步本身就很快,没有什么优化空间,但个人用户可以买一些加速器加速 DNS 服务,或者配 hosts
-
客户端向 百度服务器 发起请求 HTTP请求(tcp连接) 这里每一个文件都需要进行一次连接,所以这里我们可以在后端设置 keep-alive ,实现链接复用
-
服务器收到请求后会去查询数据库 这里后端通过 SQL 优化可以减少数据库的查询时间
- 如何了解到页面加载慢是因为 SQL 导致的呢
如果 waiting(ttfb)很长,说明很大程度是后端造成的,可以进行 SQL 优化
- 服务器响应,返回数据
我们知道 时间=加载量/加载速度
提升下载速度:你总不能要求用户去提升自己的带宽吧,当然服务器带宽我们是可以自己控制的,这个需要财务打钱,对,充钱就能更强!
压缩下载量:开启gzip算法(客户端下载压缩包并自行解压缩),nginx gzip
5. 展示页面
这里可以优化 CSS ,如我们可以把重复的选择器和属性合并
然后呢?这就完了吗?就这?
- 不不不,我们还有一个地方可以优化,那就是结合用户习惯去做一些事情!!!
用户一般都是先看到页面,不会立刻去点击一些按钮等交互,这就为我们争取到了按需加载的时间,我们可以先加载 CSS 再加载 JS
用户第一时间只能看到第一屏内容,所以后面的内容我们不用太着急——懒加载
把大家频繁需要的资源预加载,但这可能会浪费带宽,所以这一块需要我们自己权衡
-
对 http 资源资源我们可以进行缓存,这样第二次后面就会更快了 后端设置 cache-control
-
我们再来看看浏览器的一些限制特性:每个域名同时最多请求数量有限
怎么办?那就多搞几个域名呗,增大并发量,这样的话 DNS 的时间会变长,但也就那么一丢丢,比起节省的时间,我们是可以忽略这个影响哒
同时,有了多个域名,我们还可以做 cookie-free
淘宝就是这么干的:
我了解到的就这些啦,各位路过的大佬还有什么想法可以在评论区补充~