缓存的概念

缓存

定义:数据交换的缓冲区,临时存储数据的地方,读写性能较高

作用:降低后端负载,提高读写效率,降低响应时间

成本:数据一致性成本,代码维护成本,运维成本

浏览器 -> tomcat -> 数据库 -> cpu -> 磁盘

浏览器缓存 -> 应用层缓存 -> 数据库缓存 -> cpu缓存 -> 磁盘缓存

浏览器缓存

强缓存

实现流程客户端请求一个资源时,浏览器会首先检查本地是否有缓存的副本,如果有,并且这个副本未过期,浏览器会直接使用缓存的资源

实现原理:通过两种头部信息来实现,Expires和Cache-Control: max-age

Expires:HTTP1.0中的一个字段,设置了一个绝对时间,表示缓存何时过期

Cache-Control: max-age:HTTP1.1的标准,定义了一个相对时间,表示缓存多久之后过期

弱缓存(协商缓存)

实现流程:当浏览器没有找到有效的强缓存或强缓存失效时,会继续查找是否存在弱缓存,浏览器会向服务器发送一个条件请求,询问资源是否已经改变,如果服务器确认资源没有改变,就会返回304状态码,并在响应头中包含新的过期时间或其他验证信息(如ETag),然后浏览器会从本地缓存中获取资源

实现原理:通过四种头部信息来实现,Last-Modified,If-Modified-Since,ETag,If-None-Match

Last-Modified:服务器发送的资源最后修改的时间

If-Modified-Since:将If-Modified-Since中的Last-Modified与当前资源的最后修改时间进行比较,检查服务器资源是否自上次请求以来有变化

ETag:资源状态的唯一标识

If-None-Match:将If-None-Match中的ETag与当前资源的ETag进行比较,判断服务器资源是否已更新

你可能感兴趣的:(缓存)