liubulong 发表于 2019-11-26 13:45:43

正确理解缓存,加速你的web应用

1. 使用 http的头信息提高缓存效率

http请求中,我们可以合理的设置headers,就能达到缓存的目的。常用的有两种缓存策略,强制缓存和对比缓存。

第一种:强制缓存
这里写图片描述

直接访问浏览器中的缓存数据,如果存在,则直接使用浏览器中的数据。如果不存在,则再向服务器发送请求,然后得到服务器的数据,再把这些数据存在浏览器中。

第二种:对比缓存
这里写图片描述
首先,获取浏览器中的数据缓存标识,再获取服务器上面的数据缓存标识,如果相匹配,则直接从浏览器中获取数据,如果不匹配,则从服务器上获取数据。

关于缓存标识,有两类标识:
第一类:
第一次请求,服务器会返回一个Last-Modified。
下一次请求,浏览器会自动在headers中添加一条If-Modified-Since属性,记录的就是上一次数据发生修改的时间。

第二类:
第一次请求,服务端返回一个Etag资源唯一标识符。
第二次请求,浏览器会自动携带一个If-None_Match标识符。

2. 使用 CDN 提高文件下载速度
内容分发网络能显著提高网站的速度和性能。使用 CDN 时,您可以将网站的静态内容链接到全球各地的服务器扩展网络。如果您的网站观众遍布全球,这项功能十分有用。 CDN 允许您的网站访问者从最近的服务器加载数据。如果您使用 CDN,您网站内的文件将自动压缩,以便在全球范围内快速分发。
CDN 是一种缓存方法,可极大改善资源的分发时间,同时,它还能实现一些其他的缓存技术,如:利用浏览器缓存
合理地设置浏览器缓存,能让浏览器自动存储某些文件,以便加快传输速度。此方法的配置可以直接在源服务器的配置文件中完成

3. 合理设置Expires头
页面的初次访问者会进行很多HTTP请求,但是通过使用一个长久的Expires头,可以使这些组件被缓存,下次访问的时候,就可以减少不必要的HTPP请求,从而提高加载速度。

Web服务器通过Expires头告诉客户端可以使用一个组件的当前副本,直到指定的时间为止。例如:

Expires: Fri, 18 Mar 2016 07:41:53 GMT

Expires缺点: 它要求服务器和客户端时钟严格同步;过期日期需要经常检查

HTTP1.1中引入Cache-Control来克服Expires头的限制,使用max-age指定组件被缓存多久。

Cache-Control: max-age=12345600

若同时制定Cache-Control和Expires,则max-age将覆盖Expires头

页: [1]
查看完整版本: 正确理解缓存,加速你的web应用