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

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。