【问题标题】:Play framework - How to set cache timeout in conf file播放框架 - 如何在 conf 文件中设置缓存超时
【发布时间】:2018-11-14 23:27:23
【问题描述】:

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

旧版好像有这样的东西-https://www.playframework.com/documentation/1.2.3/configuration#http

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

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

【问题讨论】:

    标签: caching playframework playframework-2.6


    【解决方案1】:

    尝试以下方法,围绕缓存 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")
      }
    }
    

    试试看。不准确的代码。我只是把一些代码放在一起没有检查。我会说不要将“缓存”这个词用作包,因为我认为这是一个保留的包名称。让我们知道进展如何以及您的最终答案是什么。 ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-04
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      相关资源
      最近更新 更多