SpringBoot缓存使用

Maven地址:

 <!--springboot缓存-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>

应用场景:

项目使用springboot自带的缓存机制实现缓存
redis缓存
Redis是一款内存高速缓存数据库;
Membase缓存
Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。
ehcache 主要是对数据库访问的缓存,相同的查询语句只需查询一次数据库,从而提高了查询的速度,使用spring的AOP可以很容易实现这一功能。

页面端:
H5WebStorage
2)localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信

3)sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。源生接口可以接受,亦可再次封装来对Object和Array有更好的支持

直接把缓存存到本地,节省带宽
可以存储5M,增大了缓存的量,但是缓存太多,会导致浏览器卡
浏览器在隐私模式下取不到
爬虫不能访问到
一般把json变成string类型进行存储
不可以跨域,但是可以通过postMessage、iframe实现跨域数据读取

cookie

cookie的存储量比较小,每个domain最多有20条cookie,每条cookie最多4k
cookie是放到了http请求的header里,如果太大会有性能问题
cookie较安全,但是如果cookie被拦截了,就可以获取cookie的session。不需要破解,转发就可以达到目的了;
存在硬盘的一个文件.cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用

oscache 主要是对页面的缓存,可以整页或者指定网页某一部分缓存,同时指定他的过期时间,这样在此时间段里面访问的数据都是一样的。

http缓存
避免缓存的方法:
在请求的url后+?rander=随机数
官方的: 设置请求头1. Data 2. Cache-Control

终端:
CDN缓存:
如果应用程序web服务器离用户更近,那么一个HTTP请求的响应时间将缩短。另一方面,如果组件web服务器离用户更近,则多个HTTP请求的响应时间将缩短。

CDN(内容发布网络)是一组分布在多个不同地理位置的Web服务器,用于更加有效地向用户发布内容。在优化性能时,向特定用户发布内容的服务器的选择基于对网络慕课拥堵的测量。例如,CDN可能选择网络阶跃数最小的服务器,或者具有最短响应时间的服务器。
CDN还可以进行数据备份、扩展存储能力,进行缓存,同时有助于缓和Web流量峰值压力。

CDN的缺点

响应时间可能会受到其他网站流量的影响。CDN服务提供商在其所有客户之间共享Web服务器组。
如果CDN服务质量下降了,那么你的工作质量也将下降
无法直接控制组件服务器

缓存注解:

@EnableCaching // 开启缓存注解【启动器上】
@Cacheable标记的方法上表示该方法支持缓存,标记在一个类上表示该类的所有方法都支持缓存。
@CachePut标注的方法在执行前,不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。
@CacheEvict是用来标注在需要清除缓存元素的方法或类上的,当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。
allEntries 属性allEntries 是 boolean 类型,表示是否需要清除缓存中的所有元素,默认为 false,表示不需要
beforeInvocation 属性清除操作默认是在对应方法成功执行之后触发的,即方法如果因为抛出异常而未能成功返回时也不会触发清除操作。

发布了78 篇原创文章 · 获赞 6 · 访问量 6721

猜你喜欢

转载自blog.csdn.net/YHM_MM/article/details/104396531