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 一起使用,这些文档中也提到了。