性能优化(6)——传输加载优化

119 阅读3分钟

传输加载优化

1. 启用压缩Gzip

我们可以在浏览器的http响应头中 Content-Encoding: gzip字段看出是否开启了Gzip压缩

  • 对传输资源进行体积压缩,可高达90%
  • 如何配置Nginx启动Gzip

2. 启用Keep Alive

http1.1之后,Keep Alive这个参数是默认开启的。

在浏览器中的Network工具中,瀑布流的Initial connection字段就是http连接时间。也可在http响应头中看到 Connection: keep-alive判断是否开启了keep alive

  • 对http的tcp连接进行复用

HTTP资源缓存

http的缓存就是我们常说的强缓存协商缓存Service Worker三种

(网上已经有很多相关的知识点了,这边就不一一详细记录。)

1. 强缓存

我们打开许多网站会发现,强缓存有两种缓存策略:

  • disk cache(磁盘缓存)
  • memory cache(内存缓存)

disk cache一般存储的是css等资源,memory cache一般存储的是脚本、字体、图片资源

那么这两种存储方案有什么区别:

  1. memory cache 读写速度比 disk cache 快很多
  2. memory cache 在页面关闭时会释放掉

为什么css要存在disk cache中?

因为CSS文件加载一次就可渲染出来,我们不会频繁读取它,所以它不适合缓存到内存中,但是js之类的脚本却随时可能会执行。如果脚本在磁盘当中,我们在执行脚本的时候需要从磁盘取到内存中来,这样IO开销就很大了,有可能导致浏览器失去响应

2. 协商缓存这里不叙述

3. Service Worker

Service Worker作用:

  • 加速重复访问
  • 离线支持

Service Worker注意事项:

  • 延长了首屏时间,但页面总加载时间减少
  • 兼容性
  • 只能在localhost或https下使用

HTTP2的提升

如何查看我们所采用的http版本

在chrome浏览器中的 Network 工具栏中,我们鼠标右击勾选 Protocol 这个选项,就可以看到使用的协议了。

http2的优势

  • 二进制传输(安全、压缩效率高)
  • 请求响应多路复用
  • Server push

(依旧可以在Nginx配置中开启http2)

相较于http1.1的复用不同点:

虽然在http1.1中,我们已经可以复用tcp的链接了,但是每个资源依旧是排列发送的。而http2中,真正做到异步并发请求,不同的资源可以通过一个请求传回给客户端。

Server push

服务端可以直接配置需要推送的资源,不需要主动去请求。如果Network选项卡中的Initiator中显示的是Push,就说明是通过Server push提前推送的资源。

这些推送的资源,浏览器拿到后会直接存储在本地。等需要的时候就直接读取本地存储的资源。

相对于客户端请求来说,优势在于减少了TTFB的过程,减少了请求时间。

http2的限制

  • 必须HTTPS下
  • 适合较高的请求量

服务端渲染SSR

  • 加速首屏渲染
  • 利于SEO

vue的预渲染方案