关于前端缓存的分类

请教前端缓存的正确分类~

在网上看到很多不同版本的分类:
1.大部分是将前端缓存分为HTTP缓存、浏览器缓存
2.还有将前端缓存分为HTTP缓存、浏览器缓存、应用程序缓存的。
3.另外,在网上搜浏览器缓存的时候,我看到大部分都是值的HTTP缓存

很迷,求赐教

阅读 2.2k
2 个回答

首先需要知道的是前端静态资源(html,css,js,图片,视频等)在整个网络请求中经过了怎样的过程(如果一个网站架构简单的包括:浏览器 -> ngnix -> 源站)?所谓的前端缓存是这些静态资源从那一层返回的。
如果资源没有经过网络请求,直接从浏览器本地取资源,那就是强缓存;
如果经过了服务器(ngnix或源站),但是还是从浏览器取,那就是协商缓存;
如果经过了服务器,并且还是从服务器取的资源,那就是没有使用缓存;

而楼主想问的应该是http请求头和响应头的哪些设置会影响这个缓存的读取位置。

因为一份资源从服务器上发出,到被用户看到会经历很多道环节。这些环节都可以存在缓存,所以就会有很多种缓存。

比如:

  1. 首先服务器应用程序,像 php、java 都可以自建缓存系统,把数据缓存在更容易读取的地方。
  2. 服务器程序,比如 nginx、网关通常也会做缓存
  3. CDN 会缓存内容,避免每次都请求源站
  4. 有时候运营商还会再做缓存
  5. 到达浏览器,一般就是按照 HTTP 协议规定,在浏览器里缓存
  6. 前端也可以做自主缓存,比如 PWA,可以减少不必要的网络请求
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题