播放2.6:缓存Api和内存使用配置

时间:2018-02-01 10:30:18

标签: scala playframework

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

2 个答案:

答案 0 :(得分:2)

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

来自ScalaCache#Accessing-different-caches

  

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

来自Play' 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的项目中。

所以,让我们去找the documentation for EhCache 2.10.4

  

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

我没有引用该表,但它提到maxBytesLocalHeap听起来很有希望。

答案 1 :(得分:1)

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