前端资源文件缓存和增量更新策略

单个文件级别

大概思路:
假设客户端可缓存无限容量的资源文件(html,css,js),缓存时间可自定义。
用户每次访问项目,都发送一个资源文件是否最新的请求。
如果有更新,拉取更新的文件,刷新本地缓存。
如果没有更新,读取本地缓存资源文件。

稍微具体流程:

  1. 服务器上所有资源文件的发布,都会产生对应的唯一编码(发布时间戳或者资源内容的MD5编码),从而生成一个映射表文件。
  2. 客户端请求时,发送客户端的映射表文件版本,是否跟服务器端的映射表文件版本一致。
  3. 不一致时,获取最新的映射表文件,然后客户端进行文件对比,然后拉取最新的资源文件,刷新本地缓存。
  4. 可以把服务端多个资源文件打包成一个压缩包,客户端自行解压,来减少请求个数。

字符级别

  1. 客户端有合并增量更新代码的能力,类似git merge
  2. 服务端每次 build 的时候,同时生成最新版本与之前 n 天之内所有版本的 diff,类似git diff
  3. 客户端请求时,发送客户端的映射表文件版本,是否跟服务器端的映射表文件版本一致。
  4. 不一致时,获取diff信息,本地进行diff,刷新缓存。

你可能感兴趣的:(前端资源文件缓存和增量更新策略)