缓存
2024-05-09 10:31:03 2 举报
AI智能生成
1
作者其他创作
大纲/内容
页面静态化方案(适用于小系统)
大系统
分为两种
缓存js
css
图片
Http响应头中包含的属性
浏览器会返回下载时间、过期时间,浏览器根据此来决定是否请求服务器
HTTP1.0的东西,现在基本上用的都是HTTP1.1
response headers设置Expires
public
private
no-cache
no-store
no-transform
must-revalidate
proxy-revalidate
max-age
可能存在的值
cache-control: max-age=3600
表示:缓存3600s
原理:根据请求头的参数来判断请求的资源是否修改过,如果没有修改过则返回客户端304,此时客户端会使用本地缓存。
自定义页面
可以使用spring mvc配置过期时间,浏览器会识别
静态资源
案例
response headers设置Cache-control
利用http协议的缓存
原理
浏览器缓存
域名映射ip地址的过程
需要购买,用户的一个请求过来,会请求到离你最近的一台服务器
运营商级别的负载均衡
cdn缓存
主要作用:请求转发
接入层ngxin(网站的入口)
利用nginx插件(proxy_cache)实现本地缓存
利用插件(ngx_lua插),使用lua语言开发一个脚本,去redis中拿缓存(专门为nginx搭建的redis集群)
应用层nginx
tomcat的本地缓存
web服务器(tomcat集群)
本地缓存
本地缓存不存在,访问redis缓存2(另外一个redis集群)
redis不存在,最终查询数据库
5分钟法则:5分钟之内会经常访问这个数据,则需要添加缓存
什么数据需要添加缓存?
为什么要?首先,jvm有垃圾回收机制,但这个只是回收垃圾的,我们自己自定义的缓存应该也要有一个回收策略。避免一些不经常使用的数据一直占用内存
基于空间(缓存的大小,多少MB)
基于容量(缓存的条数)
存活期(TTL)
空闲期(TTI)
基于时间
回收策略
FIFO:先进先出
LRU:最近最少使用(用的比较多,比如Guava Cache、Ehcache)
LFU:最不常用
回收算法
缓存回收
GuavaCache
Ehcache
MapDB
new出来的对象是放在堆里的
一般是存储非常热的数据
堆内缓存
什么叫堆外缓存
不受jvm内存限制
可以存储很大的空间
不影响GC的速度
缓存放在堆外的好处
缺点
举例
一般存储不是特别热的数据
堆外缓存
落地到磁盘中的某个文件中
磁盘缓存
热点数据,经常使用:不需要过期
不是热点数据,偶尔用用:设置过期
如何判断是否添加过期机制
写缓存不要在事务中写
维度化缓存
防止大key
如何缓存数据
微服务集群
一个http请求到服务器的各个环节都需要做缓存
核心
双十一缓存高并发解决方案
电商详情页缓存
收藏
0 条评论
下一页