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



我正在使用缓存api来缓存一些普通的http响应;但是我想配置它的内存使用情况。是否可以对其设置内存限制?或者甚至将其配置为类似于Playframework的其他部分(通过application.conf(。

没有特别好的记录,但这里有一些线索。

来自 ScalaCache#Accessing-different-caches:

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

来自Play's Dependencies.scala:

val ehcacheVersion = "2.10.4"
val playEhcacheDeps = Seq(
  "net.sf.ehcache" % "ehcache" % ehcacheVersion,
  "org.ehcache" % "jcache" % "1.0.1"
) ++ jcacheApi

这是Play的ehcache-default.xml:

<!--
~ 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>

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

因此,让我们查找EhCache 2.10.4的文档。

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

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

此处的文档显示,您可以使用配置文件配置应用程序的缓存。此示例向您展示如何根据对象数而不是默认的字节数来限制缓存大小。在这里,您还可以找到 ehcache(默认的 Play!缓存提供程序(xml 配置文档。

最新更新