1,使用nginx代理缓存
使用Nginx代理缓存,主要是一些配置,这里注意当缓存数据不一致时如何进行刷新。
2,使用304状态码,http的304返回码使用etag,具体一点就是做个标记,可以理解为版本号。通过一定的算法,例如md5摘要进行校验。
客户端第二次进行请求的时候,携带etag标记,服务端正常处理,在返回的时候校验etag,相同的话返回304状态码。可以理解为请求成功。没有返回数据。客户端接收到之后,使用自己的缓存渲染数据。
例如,springboot使用shadowEtagFilter实现etag功能
很简单,在容器中注入一个Filter,就可以实现。例如:
对,就是这么简单,当第二次请求的时候,将使用客户端自己的缓存数据。
3,使用spring-cache
spring-cache有多个实现,这里我们使用redis。在springboot项目中使用很简单。它主要是作用在方法上的
只需要在应用主类中添加@EnableCaching注解。在数据获取部分使用@Cacheble就可以。
如果,有多个数据提供的话,需要配置cachemanager。
这里主要介绍一下,几个常用注解的含义:
@Cacheable和@CacheEvict和@CachePut:
使用@Cacheable标记的方法在执行后Spring Cache将缓存其返回结果
使用@CacheEvict标记的方法会在方法执行前或者执行后移除Spring Cache中的某些元素。
使用@CachePut标记的方法会在方法执行前或者将返回结果放入缓存中。
@Cacheable需要注意,与数据库中数据一致的问题
使用@CachePut和@CacheEvict需要时同一个缓存实例。相同的key
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。