Play framework - 如何在conf文件中设置缓存超时
Play framework - How to set cache timeout in conf file
我正在开发一款使用 Play 框架 2.6 的应用程序。 (如果重要的话,使用 sbt 启动)
我想使用配置将缓存超时设置为某个限制,而不是为每个端点单独设置。
旧版本好像有这样的东西- https://www.playframework.com/documentation/1.2.3/configuration#http
但这对我当前的项目不起作用。有什么指点吗?
(运行 我本地生产模式下的应用程序将其设置为:
缓存控制:最大年龄=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
class 你可以在需要的地方注入它...
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@whosebug.com",
"Bob", "Bobberson", "pass"))
Ok("Yay")
}
}
试试吧。不是确切的代码。我只是将一些代码放在一起而没有检查。我会说不要使用 'cache' 这个词作为包,因为我认为这是一个保留的包名称。让我们知道进展如何以及您的最终答案是什么。 ;)
我正在开发一款使用 Play 框架 2.6 的应用程序。 (如果重要的话,使用 sbt 启动) 我想使用配置将缓存超时设置为某个限制,而不是为每个端点单独设置。
旧版本好像有这样的东西- https://www.playframework.com/documentation/1.2.3/configuration#http
但这对我当前的项目不起作用。有什么指点吗?
(运行 我本地生产模式下的应用程序将其设置为: 缓存控制:最大年龄=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
class 你可以在需要的地方注入它...
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@whosebug.com",
"Bob", "Bobberson", "pass"))
Ok("Yay")
}
}
试试吧。不是确切的代码。我只是将一些代码放在一起而没有检查。我会说不要使用 'cache' 这个词作为包,因为我认为这是一个保留的包名称。让我们知道进展如何以及您的最终答案是什么。 ;)