网络请求

关于网络请求

  swpp 默认的 fetch 工作流程如下:

fetch 工作流程图

关于缓存

  对于使用了 CDN 的同学,网站结构大致如下:

CDN 结构

CDN 缓存

  CDN 缓存是用户访问 CDN 时,若指定的资源不在 CDN 中存在,则会从源站中拉取资源,然后缓存到 CDN 的服务器当中,下一次用户再次访问同一个资源时,就不需要再访问源站了。

  对于使用 CDN 的同学,这个功能推荐启用,可以降低源站压力、提高网站响应速度。

存在的问题

  目前 CDN 的缓存一般是每个文件独立计时的,那么通过 CDN 拉取文件时就有可能出现一部分的文件是最新的,而一部分文件是未更新的结果。

  如果此时客户端拉取到的其它文件是新的,而版本文件是旧的,那么就会导致版本文件的 CDN 缓存更新时,把不需要更新的内容又重复地更新了一遍。

  如果此时客户端拉取到的版本文件是最新的,而其它文件是旧的,那么就会导致这部分资源无法被及时更新,同时如果这个资源您是使用永久缓存的方式存储的,那么直到手动更新或下一次版本更新前,其将永远不会被更新。

  为了解决这个问题,可以从以下方案里面选择:

  1. 把所有文件的 CDN 缓存时间拉到最长,每次更新网站后刷新 CDN 的所有缓存
  2. 把所有文件的 CDN 缓存时间拉到最长,每次更新网站后刷新需要刷新的资源的 CDN 缓存
  3. 选择支持同步不同资源缓存时间的 CDN
  4. 对于需要本地缓存的资源不使用 CDN 缓存(不推荐)
  5. 不使用 CDN(不推荐)