Scala 重头戏2.6:缓存Api和内存使用配置

Scala 重头戏2.6:缓存Api和内存使用配置,scala,playframework,Scala,Playframework,我使用cacheapi来缓存一些普通的http响应;但是,我想配置它的内存使用情况。有可能对其设置内存限制吗?甚至可以将其配置为与Playframework的其他部分类似(通过application.conf) 玩吧!文档显示,您可以使用配置文件配置应用程序的缓存。是一个示例,演示如何根据对象数而不是默认的字节数限制缓存大小。在这里,您还可以找到ehcache(默认播放!缓存提供程序)xml配置文档。文档不是特别详细,但这里有一些线索 发件人: 在默认的Ehcache实现中,默认缓存称为play

我使用cacheapi来缓存一些普通的http响应;但是,我想配置它的内存使用情况。有可能对其设置内存限制吗?甚至可以将其配置为与Playframework的其他部分类似(通过
application.conf

玩吧!文档显示,您可以使用配置文件配置应用程序的缓存。是一个示例,演示如何根据对象数而不是默认的字节数限制缓存大小。在这里,您还可以找到ehcache(默认播放!缓存提供程序)xml配置文档。

文档不是特别详细,但这里有一些线索

发件人:

在默认的Ehcache实现中,默认缓存称为play,可以通过创建名为Ehcache.xml的文件进行配置

从Play's:

下面是剧本:


复制该文件的内容,并将其作为资源包含在名为
ehcache.xml
的项目中

那我们去找吧

优化Ehcache通常涉及适当调整数据存储层的大小。您可以使用简单的调整大小属性以多种方式调整不同数据层的大小。这些大小调整属性会影响内存和磁盘资源。 下表总结了可以使用的大小调整属性


我不会引用这个表,但它提到了一个
maxBytesLocalHeap
,听起来很有希望。

看起来Play使用了Ehcache 2.10.4,所以你的Ehcache 3.3链接可能会产生误导。为了澄清,我们只添加了一个文件
ecache.xml
,它应该位于
conf
文件夹中,对吗?此外,如果应用程序达到指定的限制,该怎么办?第一个问题:是(但请确保其名称为
ehcache.xml
)。第二个问题:
val ehcacheVersion = "2.10.4"
val playEhcacheDeps = Seq(
  "net.sf.ehcache" % "ehcache" % ehcacheVersion,
  "org.ehcache" % "jcache" % "1.0.1"
) ++ jcacheApi
<!--
~ Copyright (C) 2009-2017 Lightbend Inc. <https://www.lightbend.com>
-->
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false">

    <defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="false"
            maxElementsOnDisk="10000000"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
    /> 

</ehcache>