Play framework - Как установить тайм-аут кэша в файле conf - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над приложением, использующим Play framework 2.6.(запускается с использованием sbt, если это имеет значение) Я хотел бы установить тайм-ауты кэша до определенного предела, используя конфигурацию, а не индивидуально для каждой конечной точки.

Старая версия, похоже, имела что-то вроде этого - https://www.playframework.com/documentation/1.2.3/configuration#http

Но это не работает для моего текущего проекта.Любые указатели?

(Запуск приложения в производственном режиме на моем локальном компьютере устанавливает его на: Cache-Control: max-age = 0 )

1 Ответ

0 голосов
/ 15 ноября 2018

Попробуйте следующее, создайте свой собственный шаблон адаптера с помощью Cache 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")
  }
}

Попробуйте.Не точный кодЯ просто собрал код без проверки.Я бы сказал, не используйте слово «кеш» в качестве пакета, поскольку я думаю, что это зарезервированное имя пакета.Дайте нам знать, как это происходит и каков ваш окончательный ответ.;)

...