Play 框架的维护模式
Maintenance mode for the Play Framework
有什么方法可以显示静态 HTML 页面,以说明网站在 Play Framework 编译新代码时处于维护状态?
我知道我们如何手动创建维护页面,例如在进行长时间的数据库或文件更改时(在此期间应用程序可能处于不一致状态),但是是否有任何内置方法对于 Play 框架?
我知道一些其他主要的服务器软件如 Nginx 有办法在这里显示静态资源。既然Play Framework也是服务器软件,有没有对应的?
当然可以。最好的选择是使用 request interceptors。这是使用请求过滤器,从这些文档中稍微改编而来:
import play.api.Logger
import play.api.mvc._
object MaintenanceModeFilter extends Filter {
def apply(next: (RequestHeader) => Future[Result])(request: RequestHeader): Future[Result] = {
if (/* check for trigger */) {
Logger.info("Sending maintenance mode response")
Ok(/* your maintenance page */)
} else {
next(request)
}
}
}
object Global extends WithFilters(AccessLoggingFilter)
如果您愿意,您可以使它与 onRouteRequest
一起使用,这些文档中也提到了。
有什么方法可以显示静态 HTML 页面,以说明网站在 Play Framework 编译新代码时处于维护状态?
我知道我们如何手动创建维护页面,例如在进行长时间的数据库或文件更改时(在此期间应用程序可能处于不一致状态),但是是否有任何内置方法对于 Play 框架?
我知道一些其他主要的服务器软件如 Nginx 有办法在这里显示静态资源。既然Play Framework也是服务器软件,有没有对应的?
当然可以。最好的选择是使用 request interceptors。这是使用请求过滤器,从这些文档中稍微改编而来:
import play.api.Logger
import play.api.mvc._
object MaintenanceModeFilter extends Filter {
def apply(next: (RequestHeader) => Future[Result])(request: RequestHeader): Future[Result] = {
if (/* check for trigger */) {
Logger.info("Sending maintenance mode response")
Ok(/* your maintenance page */)
} else {
next(request)
}
}
}
object Global extends WithFilters(AccessLoggingFilter)
如果您愿意,您可以使它与 onRouteRequest
一起使用,这些文档中也提到了。