У меня есть сайт с высокой посещаемостью и большим количеством статического контента. В настоящее время он находится в Play 1.2.4, но я перехожу на Play 2.0.2.
Для Play 1.X мы написали некоторый код, который использовали вместо @asset внутри html-шаблонов.
/**
* 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 мы можем улучшить это. Я думаю, было бы лучше, если бы нам не приходилось засорять наши шаблоны собственным кодом вместо использования @Asset.at, предоставляемого Play 2.0. Я не уверен, что это лучший способ сделать это. Мне интересно, было ли сделано что-то подобное в ответе на этот вопрос в Play 1.2.X Размещение статического HTML в Play! приложение на CloudFront можно сделать для Play 2.0.
Я хотел бы в полной мере воспользоваться контроллером Assets, предоставляемым Play 2.0, поскольку он выполняет несколько оптимизаций, которые было бы неплохо иметь.
Кто-нибудь знает способ сделать это? Я думаю, что если это можно сделать с помощью всего лишь некоторой магии маршрутизатора, это было бы идеально, но я все еще слишком новичок в Play, чтобы знать, возможно ли это и как это сделать.