5

多くの静的コンテンツを含むトラフィックの多い 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 の初心者なので、それが可能かどうか、またはどのように可能かを知ることができません。

4

1 に答える 1

4

James Ward は、それをきれいに行うための優れたチュートリアルを書いています。

于 2012-08-29T21:02:46.023 に答える