播放框架缓存存储在哪里?

时间:2015-03-18 14:48:23

标签: java caching playframework

我正在构建使用Play Framework的Java应用程序,对我来说访问缓存文件至关重要。

我正在寻找Play Framework缓存所在的位置。那是在磁盘上的某个地方,如果是的话,在哪里?

我可以以某种方式从它(例如从Windows资源管理器)访问文件,或者故意隐藏用户(或者可能加密)吗?

1 个答案:

答案 0 :(得分:5)

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文件吐出到该目录中。

我不太明白为什么你想要缓存到磁盘,除非你真的被困在内存中。磁盘缓存对于本地缓存来说效率不高,并且在分布式环境中不起作用。

您可以使用其他缓存插件,例如memcachedredis,而不是内存或磁盘缓存。如果您需要在这些实例中从应用程序外部访问缓存,则可以使用其他实现来执行此操作。例如,如果您使用redis,则可以使用redis-cli。