播放框架-如何在conf文件中设置缓存超时

时间:2018-11-14 23:27:24

标签: caching playframework playframework-2.6

我正在使用Play Framework 2.6开发应用程序。 (如果重要的话,使用sbt启动) 我想使用配置将缓存超时设置为某个限制,而不是为每个端点单独设置。

旧版本似乎有这样的内容-https://www.playframework.com/documentation/1.2.3/configuration#http

但这不适用于我当前的项目。有指针吗?

(在我的本地计算机上以生产模式运行该应用程序会将其设置为:     缓存控制:max-age = 0

1 个答案:

答案 0 :(得分:0)

尝试以下操作,围绕缓存API创建自己的适配器模式:

package caching

import javax.inject._
import play.api.Configuration
import play.api.cache.AsyncCacheApi

import scala.concurrent.duration.Duration

@Singleton
class ConfigCache @Inject()(config: Configuration, cache: AsyncCacheApi) {
  def set(name: String, obj: Any) = {
    cache.set(name, obj, config.get[Duration]("my.play.duration"))
  }
}

现在您有了ConfigCache类,您可以在需要的地方添加该类...

package controllers

import javax.inject._
import play.api._
import play.api.mvc._
import services.Counter
import caching.ConfigCache
import models.Account

@Singleton
class SomeController @Inject() (configCache: ConfigCache, cc: ControllerComponents)(implicit executionContext: ExecutionContext) extends AbstractController(cc) {

  def myAction = Action {
    configCache.set("my.item", Account(1, "bob@stackoverflow.com", 
                    "Bob", "Bobberson", "pass"))
    Ok("Yay")
  }
}

尝试一下。代码不正确。我只是将一些代码放在一起而不进行检查。我会说不要将“缓存”一词用作软件包,因为我认为这是保留的软件包名称。让我们知道进展如何,您的最终答案是什么。 ;)