我有一个带国际化功能的Play Framework 2应用程序。
我以标准配置使用嵌入在Play(ehCache)中的CacheApi。 我以索引页为例:
@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(或自动检测浏览器的lang / country)
public Result changeLanguage(String code) {
Controller.changeLang(Language.findByCode(code).code);
return redirect(controllers.routes.Application.index().toString());
}
当我更改语言时,将显示与之前按顺序排列的第一语言页面中缓存的页面相同的页面。
如何为一种语言指定缓存(如果我有3种语言,则缓存3种差异索引页)。对于数据库翻译,我想查询结果查询时遇到同样的问题,但遵循的语言会有所不同。我想缓存翻译查询,因为它将使用很多数据库。
会话缓存,数据库缓存,用户缓存之间有什么区别?