浏览器请求资源之:缓存查找
浏览器请求资源之:缓存查找

浏览器请求资源之:缓存查找

HTTP使用Cache-control头进行缓存控制

  1. Cache-Control: no-store 没有缓存
  2. Cache-Control: no-cache 缓存但重新验证
  3. Cache-Control: private 私有缓存
  4. Cache-Control: public 公共缓存

通常情况下,针对应用中那些不会改变的文件,

可以使用Cache-Control: max-age=<seconds>的方式来控制缓存过期,其表示资源能够被缓存(保持新鲜)的最大时间。


对于随版本发布经常变更的文件,以上方式并不适用,提供另一种缓存方式:

Cache-Control: no-cache 结合ETag校验

ETag HTTP响应头是资源的特定版本标识符,类似于指纹,由服务器根据资源文件进行生成。如果资源更改,则服务器一定生成新的ETag值。

具体做法是:

  1. 服务器响应头中添加ETag字段,同时添加Cache-Control: no-cache。
  2. 浏览器端缓存资源,但是后续每次请求时不会直接读取本地缓存,而是进行服务端验证。
  3. 浏览器对于有缓存的资源,会在请求头中附加ETag指纹进行验证请求。
  4. 服务端收到ETag后,将其与最新ETag进行对比校验。
  5. 如果ETag没有改变则返回304 Not Modified,通知浏览器端使用本地缓存文件。
  6. 如果ETag改变,则返回200,并返回最新资源。

发表评论

邮箱地址不会被公开。