我有一个包含大量静态内容的高流量网站。它目前在 Play 1.2.4 上,但我正在迁移到 Play 2.0.2。
对于 Play 1.X,我们编写了一些我们使用的代码,而不是 html 模板中的 @asset。
/**
* Drop-in replacement for @asset. Use to take advantage of cloudfront on live.
* Paths are always absolute to root. Leading '/' is optional.
*
* @param path relative to the application root. This should usually be "public/some-file"
* @return path to asset on the currently configured CDN.
*/
def cdnAsset(path: String) : String = {
cdnEnabled match {
case "true" =>
path(0) match {
case '/' => "https://" + cdnUrl + path
case _ => "https://" + cdnUrl + "/" + path
}
case _ =>
play.mvc.Router.reverse(play.Play.getVirtualFile(path))
}
}
对于 Play 2.0,我认为我们可以改进这一点。我认为如果我们不必使用自定义代码乱扔模板而不是使用 Play 2.0 提供的 @Asset.at 会更好。我不确定做到这一点的最佳方法。我想知道在 Play 1.2.X Hosting static HTML in a Play上的这个问题的答案中是否做了类似的事情 !CloudFront 上的应用程序 可以为 Play 2.0 完成。
我想充分利用 Play 2.0 提供的 Assets 控制器,因为它执行了一些很不错的优化。
有谁知道这样做的方法?我在想如果它可以通过一些路由器魔法来完成,那将是理想的,但我对 Play 还是有点太初学者了,不知道这是否或如何可能。