我需要将一堆图像加载到我的Spring webapp中。出于性能原因,这应该只在启动webapp后完成。图像应保存为单个,以便从多个用户,会话等访问
我已经构建了一个带有initalizer的Java Bean来加载图像,在我的控制器中我注入了这个bean并获取了图像。工作,但注射不是正确的。
如何构建单个bean来保存图像,并且每个webapp只加载一次图像?
答案 0 :(得分:4)
您是否考虑过使用EhCache内置web caching?只需将其添加到web.xml
:
<filter>
<filter-name>pageCachingFilter</filter-name>
<filter-class>net.sf.ehcache.constructs.web.filter.SimpleCachingHeadersPageCachingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>pageCachingFilter</filter-name>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.css</url-pattern>
</filter-mapping>
在SimplePageCachingFilter
中配置ehcache.xml
缓存:
<cache name="SimplePageCachingFilter"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="31536000"
timeToLiveSeconds="31536000"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU"
statistics="true"
/>
EhCache现在将拦截所有客户端对静态资源的请求,读取它们一次,将它们放入缓存并返回给用户。为了使它更好,它甚至会添加HTTP Expiry
headeres,以便客户端不会再次为您调用相同的资源。
与单手中的手动编写加载和缓存相比,这种方法不是更好吗?