1,使用nginx代理緩存nginx
使用Nginx代理緩存,主要是一些配置,這裏注意當緩存數據不一致時如何進行刷新。
2,使用304狀態碼,http的304返回碼使用etag,具體一點就是作個標記,能夠理解爲版本號。經過必定的算法,例如md5摘要進行校驗。
客戶端第二次進行請求的時候,攜帶etag標記,服務端正常處理,在返回的時候校驗etag,相同的話返回304狀態碼。能夠理解爲請求成功。沒有返回數據。客戶端接收到以後,使用本身的緩存渲染數據。 redis
例如,springboot使用shadowEtagFilter實現etag功能
很簡單,在容器中注入一個Filter,就能夠實現。例如: 算法
對,就是這麼簡單,當第二次請求的時候,將使用客戶端本身的緩存數據。spring
3,使用spring-cache
spring-cache有多個實現,這裏咱們使用redis。在springboot項目中使用很簡單。它主要是做用在方法上的
只須要在應用主類中添加@EnableCaching註解。在數據獲取部分使用@Cacheble就能夠。
若是,有多個數據提供的話,須要配置cachemanager。
這裏主要介紹一下,幾個經常使用註解的含義: 數據庫
@Cacheable和@CacheEvict和@CachePut:
使用@Cacheable標記的方法在執行後Spring Cache將緩存其返回結果
使用@CacheEvict標記的方法會在方法執行前或者執行後移除Spring Cache中的某些元素。
使用@CachePut標記的方法會在方法執行前或者將返回結果放入緩存中。
@Cacheable須要注意,與數據庫中數據一致的問題
使用@CachePut和@CacheEvict須要時同一個緩存實例。相同的key緩存