У меня есть приложение Play Framework 2 с интернационализацией.
Я использую встроенный в Play CacheApi (ehCache) со стандартной конфигурацией.Я сделал пример с индексной страницей:
@Inject @NamedCache("session-cache") CacheApi cache;
затем
@Cached(key = "index")
public Result index() {
//Controller.changeLang("fr");
return ok(index.render(this.userProvider,"c-layout-header-fullscreen",NEWS_FORM));
}
Когда я запускаю первую страницу и обновляю ее, она, кажется, работает, но у меня есть способ изменить язык (или обнаружитьавтоматически браузер lang / country)
public Result changeLanguage(String code) {
Controller.changeLang(Language.findByCode(code).code);
return redirect(controllers.routes.Application.index().toString());
}
, когда я меняю язык, отображается та же страница, что и ранее, кэшированная на первой странице упорядоченного языка.
Как я могуукажите кеш для языка (если у меня есть 3 языка, кешируется страница с 3 разными индексами).Та же проблема для перевода БД. Я хочу получить результат запроса, но, следуя языку, он будет другим.Я хочу кешировать запрос на перевод, потому что он будет использовать много БД.
В чем разница между сессионным кешем, db-кешем, пользовательским кешем?