我正在构建使用Play Framework的Java应用程序,对我来说访问缓存文件至关重要。
我正在寻找Play Framework缓存所在的位置。那是在磁盘上的某个地方,如果是的话,在哪里?
我可以以某种方式从它(例如从Windows资源管理器)访问文件,或者故意隐藏用户(或者可能加密)吗?
答案 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
文件吐出到该目录中。
我不太明白为什么你想要缓存到磁盘,除非你真的被困在内存中。磁盘缓存对于本地缓存来说效率不高,并且在分布式环境中不起作用。
您可以使用其他缓存插件,例如memcached或redis,而不是内存或磁盘缓存。如果您需要在这些实例中从应用程序外部访问缓存,则可以使用其他实现来执行此操作。例如,如果您使用redis,则可以使用redis-cli。