播放框架缓存存储在哪里?
Where is play framework cache stored?
我正在构建 Java 使用 Play Framework 的应用程序,访问缓存文件对我来说至关重要。
我正在寻找 Play Framework 缓存所在的位置。那是在磁盘上的某个地方吗?如果是,在哪里?
我能否以某种方式从它(例如从 windows 资源管理器)访问文件,或者它是故意对用户隐藏的(或者可能是加密的)?
Play 的默认缓存实现使用 EhCache,它是一种内存缓存。所有缓存的(应该)序列化为字节,并存储在内存中的某个地方。据我所知,没有加密。所以不,没有您可以访问的文件。而且因为它是内存缓存,一旦您关闭或重新启动服务器,它就会消失。
正如@RichDougherty 所指出的,您可以 配置 EhCache 以缓存到磁盘,而不是内存。我把这个 ehcache.xml
放到了我的 conf
目录中:
<ehcache>
<diskStore path="/home/mz/temp"/>
<defaultCache
maxEntriesLocalHeap="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
maxEntriesLocalDisk="10000000"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<persistence strategy="localTempSwap"/>
</defaultCache>
</ehcache>
..将二进制 play.data
文件吐出到该目录中。
我不太明白你为什么要缓存到磁盘,除非你真的被内存所限。磁盘缓存对于本地缓存来说不是很有效,并且在分布式环境中也不起作用。
您可以使用另一个缓存插件,例如 memcached or redis,而不是内存或磁盘缓存。如果您需要在这些实例中从应用程序外部访问缓存,那么您可以使用其他实现来实现。例如,如果你使用redis,你可以使用redis-cli。
我正在构建 Java 使用 Play Framework 的应用程序,访问缓存文件对我来说至关重要。
我正在寻找 Play Framework 缓存所在的位置。那是在磁盘上的某个地方吗?如果是,在哪里?
我能否以某种方式从它(例如从 windows 资源管理器)访问文件,或者它是故意对用户隐藏的(或者可能是加密的)?
Play 的默认缓存实现使用 EhCache,它是一种内存缓存。所有缓存的(应该)序列化为字节,并存储在内存中的某个地方。据我所知,没有加密。所以不,没有您可以访问的文件。而且因为它是内存缓存,一旦您关闭或重新启动服务器,它就会消失。
正如@RichDougherty 所指出的,您可以 配置 EhCache 以缓存到磁盘,而不是内存。我把这个 ehcache.xml
放到了我的 conf
目录中:
<ehcache>
<diskStore path="/home/mz/temp"/>
<defaultCache
maxEntriesLocalHeap="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
maxEntriesLocalDisk="10000000"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<persistence strategy="localTempSwap"/>
</defaultCache>
</ehcache>
..将二进制 play.data
文件吐出到该目录中。
我不太明白你为什么要缓存到磁盘,除非你真的被内存所限。磁盘缓存对于本地缓存来说不是很有效,并且在分布式环境中也不起作用。
您可以使用另一个缓存插件,例如 memcached or redis,而不是内存或磁盘缓存。如果您需要在这些实例中从应用程序外部访问缓存,那么您可以使用其他实现来实现。例如,如果你使用redis,你可以使用redis-cli。