2015-02-24 213 views
2

有没有什么办法可以让显示静态HTML页面来解释站点在诸如Play Framework正在编译新代码的时候是否处于维护状态?Play Framework的维护模式

我可以看到我们如何能够手动创建的东西维护页面如同时长的数据库或文件的变化正在发生(在此期间,应用程序可能会处于不一致的状态),但没有任何内置的方式进行Play框架?

我知道像Nginx这样的其他主要服务器软件有办法在这里显示静态资源。由于Play Framework也是服务器软件,它是否具有相同的功能?

+0

“编译新代码”使得它听起来像你在开发模式下运行你的服务器,播放将永远不会重新编译生产中的任何东西 - 它不会在产品中进行热重新加载。 – Ryan 2015-02-24 07:12:02

+0

重新说明你的问题。 “当播放服务器不可用时,您希望播放服务器显示一个页面。”这不应该由应用程序本身处理。例如,它应该通过反向代理完成。 – 2015-02-24 07:49:43

+0

@Ryan,在代码更改后重新启动服务器(例如'git pull')后,它确实处于生产模式。我并不担心重新启动Play所需的时间,但编辑过程可能需要一段时间,Play可以轻松地为静态页面提供服务。 – Kat 2015-02-24 08:03:57

回答

4

当然。你最好的选择是使用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工作,在这些文件中还提到,如果你喜欢。