背景
由于我们的每次显示图片的话, 都将需要大量的查询和相关的流. 这样对我们的系统压力极大, 用户体验极差.
所以使用了缓存把图片流缓存起来, 这样就可以解决问题了.
实现
这里我用的是 ehcache, 由于他小巧依赖少.
1: 把我们的包导入进来
- org.springframework.boot
- spring-boot-starter-cache
- ehcache
2: 配置 xml 文件
- xml version="1.0" encoding="UTF-8"?>
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
- updateCheck="false">
- path="/data/flow/ehcache"/>
- eternal="false"
- maxElementsInMemory="900"
- overflowToDisk="false"
- diskPersistent="false"
- timeToIdleSeconds="0"
- timeToLiveSeconds="30"
- memoryStoreEvictionPolicy="LRU"/>
- name="cache-process-image"
- eternal="false"
- maxElementsInMemory="2000"
- maxElementsOnDisk="3000"
- overflowToDisk="true"
- diskPersistent="true"
- timeToIdleSeconds="0"
- timeToLiveSeconds="1296000"
- memoryStoreEvictionPolicy="LRU"/>
3: 配置 application.properties 文件
spring.cache.ehcache.config=classpath:/ehcache/flow-ehcache.xml
4: 配置缓存注解
- @Cacheable(value = FlowConstant.CACHE_PROCESS_IMAGE, key = "'"+ FlowConstant.PROCESSINSTANCE_PREFIX +"'+ #processInstanceId")
- public InputStream createImage(String processInstanceId) {
就这么简单就能实现图片缓存了, 以廉价的技术实现强大的功能.
来源: http://www.bubuko.com/infodetail-2935169.html