- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的 spring mvc web 应用程序中使用 ehcache。因为我的服务器每天都重置,所以我希望缓存是永久的。我将它保存在硬路径中吗?锄保存它?谢谢。
在我的 dispatcher-servlet.xml 中我添加了这个
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="ehcache"/>
</bean>
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
<property name="shared" value="true"/>
</bean>
我的ehcach.xml是
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<diskStore path="c:/tmp"/>
<defaultCache
maxElementsInMemory="500" eternal="true" overflowToDisk="false" memoryStoreEvictionPolicy="LFU"/>
<cache name="mycache"
maxElementsInMemory="0"
eternal="true"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="1200"
memoryStoreEvictionPolicy="LRU">
[1] <persistence strategy="localRestartable" synchronousWrites="false" />
</cache>
我添加此 [1] 直到缓存成为永久缓存并且在服务器重置后不会被删除。但是发生此异常元素不允许嵌套元素。我也使用 ehcach-core2.7.0.jar
Element <cache> does not allow nested <persistence> elements.
最佳答案
您不应将遗留配置选项 - cache
元素上的 diskPersistent
和 overflowToDisk
属性与推荐的 persistence
混合使用元素。
但是,要获得开源磁盘持久设置,您需要坚持使用旧选项。
所以你的配置应该删除 persistence
元素成为:
<cache name="mycache"
maxElementsInMemory="0"
eternal="true"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="1200"
memoryStoreEvictionPolicy="LRU">
</cache>
但是,您还应该为 maxElementsInMemory 赋予一个有意义的值,这样您就可以拥有一组热条目,在访问它们时无需支付反序列化费用。
您还需要决定是否需要永恒元素或过期时间。为此,删除 eternal="true"
或 timeToLiveSeconds
和 timeToIdleSeconds
对。出于兼容性原因,两者都不是 Ehcache 中的错误,但很难知道您最初的意图。
作为最后的建议,我会将缓存内容移动到一个名称更具描述性的文件夹中,而不是 c:/tmp
。
请注意,开源磁盘持久层不是容错的,因此不正确地关闭 Cache
或 CacheManager
或在执行 IO 时出现异常可能会损坏数据。如果发生这种情况,您必须先清除数据文件夹,然后才能重新启动缓存。
有关详细信息,请参阅 the Ehcache 2.7 persistence documentation .
关于java - 如何在 spring mvc 中使用 ehcache 进行永久缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745348/
我是一名优秀的程序员,十分优秀!