缓存分类
前言:之所以写这一类文章 主要是 对自己 的知识 梳理 总结,如果能帮助大家 当然更好
- html 标签缓存 设置
- 服务端 nginx 缓存设置
- cdn 缓存设置,+ 负载均衡
- 浏览器缓存规则
- 本地数据缓存 cookie ,localstorage,sesstionStorage,DB 等
一:本地数据缓存 cookie ,localstorage,sesstionStorage,DB 等
类型 | 缓存时间 | 大小 | 备注 |
---|---|---|---|
cookie | 根据 expires 来判断( 不设置 则 仅在会话阶段)(设置过期时间:马上无效)(>当前时间:则为设置时间后失效) | 4k | 1.会与请求 每次传递到服务端,2,不同浏览器都是有区别的哦 |
localStorage | 一直都在 持久化 | 5M | 就在浏览器里 |
sessionStorage | 在会话阶段 | 5M | 就在浏览器里 |
二:CDN缓存设置
咋说呢 ,,花钱买的cdn 又有专门的文档 感觉咋说 都是配置
- 意义 :CDN 主要目的是加速网站 ,减少服务器压力 ,
- 常见指标 (延时,下载速度,打开速度,丢包率,回源率,缓存命中率)
https://help.aliyun.com/document_detail/27112.html?spm=5176.13394999.0.0.32f173f8FE6YRH
当然 说到CDN 缓存 就又能想到负载均衡 ,负载均衡 简单来说,有 购买的,有自己配置的,常见 或者我使用过的 就只有 nginx 简而言之 就是 配多个服务器设置权重 来达到分流的目的,,当然 花钱也行
三:浏览器缓存规则
- 强缓存 (用户发送的请求,直接从客户端缓存中获取,不发送请求到服务器,不与服务器发生交互行为,利用http的返回头中的Expires或者Cache-Control两个字段来控制)(通过 Nginx 配置 OR server 配置)
- 协商缓存 用户发送的请求,发送到服务器后,由服务器判定是否从缓存中获取资源(http头信息中的Last-Modify/If-Modify-Since或Etag/If-None-Match)
四:html 标签缓存(只是作为了解)
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
Cache-Control
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息
-
怎么说呢 ,京东 ,淘宝 ,美团, 等首页,微信文章 都未使用 这些标签了,无非就是 在html 阶段尽量这样处理,保证代码是最新的
-
缓存问题依靠html的meta标签解决是不靠谱的,一般大型网站都依靠服务端 在 http头中对静态资源设置缓存
-
CDN 缓存设置 (简单来说就是花钱 玩儿配置,设置规则设置阀值)
五:服务端 nginx 缓存设置
- proxy_cache_path 和 proxy_cache 就可以开启内容缓存
- 很遗憾 我自己在项目中本身没有怎么使用过,看了一些这篇文章 ,与大家共同学习哈
- https://segmentfault.com/a/1190000019179879?utm_source=tag-newest