# 传输加载优化

# 启动压缩 Gzip

在 修改 Nginx 配置,启动Gzip压缩

gzip                on;

# Keep-Alive

Keep-Alive 在 Http1.1 默认是开启的,可以在 Response Header 中可以看到 Connection: keep-alive

在 nginx 配置中有两个比较重要的配置

keepalive_timeout 65  // 保持连接的时间,也叫超时时间,单位秒
keepalive_request 100 // 最大连接上限

合理的根据自己的业务量进行调整

# Http 缓存

详见HTTP 缓存,现在介绍下在 Nginx 中的配置

# Service Workers

workbox-webpack-plugin中我们介绍过,简单配置即可

只能在本地和 https 下才能使用

# Http2

  • 二进制传输

  • 请求相应多路复用

  • Server push

在 Nginx 开启 Htpps,配置证书,可以参考 生成自签名的 SSL 证书和私钥

修改配置

server {
	# 添加 http2
	listen 443 ssl http2;
	...
}

# SSR

详见 SSR 服务端渲染

# 加载顺序

# preload

Preload 来告诉浏览器预先请求当前页需要的资源,从而提高这些资源的请求优先级。比如,对于那些本来请求优先级较低的关键请求,我们可以通过设置 Preload 来提升这些请求的优先级。合理的安排优先级可以提升网站的性能,比如我们可以优先字体资源的下载

# prefetch

Prefetch 来告诉浏览器用户将来可能在其他页面(非本页面)可能使用到的资源,那么浏览器会在空闲时,就去预先加载这些资源放在 http 缓存,最常见的 dns-prefetch.

从加载优先级上看,Preload 会提升请求优先级;而Prefetch会把资源的优先级放在最低,当浏览器空闲时才去预加载。

# async

如果 script 脚本添加了此属性,浏览器会异步下载后立刻同步执行脚本。

说通俗点,脚本下载是异步行为,下载过程中并不影响 DOM 加载,但一旦脚本下载完毕就会立刻同步执行脚本,此时 DOM 加载还是得给我等着

async

# defer

与 async 一样属于异步下载脚本,但不同的地方是,脚本下载完成后并不会立刻执行,而是等到 DOM 解析完成才会执行脚本,相比 async 的粗暴,defer 明显更加实用。加载顺序如下图:

defer

更新时间: 6/29/2021, 4:23:20 PM