多くの静的コンテンツを含むトラフィックの多い Web サイトがあります。現在 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 の app は Play 2.0 で実行できます。
Play 2.0 が提供する Assets コントローラーを最大限に活用したいと考えています。
誰もこれを行う方法を知っていますか? ルーターの魔法だけでそれができれば理想的ですが、私はまだ Play の初心者なので、それが可能かどうか、またはどのように可能かを知ることができません。