Использование CDN в Play 2.0

У меня есть сайт с высокой посещаемостью и большим количеством статического контента. В настоящее время он находится в 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, чтобы знать, возможно ли это и как это сделать.


person myyk    schedule 29.08.2012    source источник


Ответы (1)


Джеймс Уорд написал отличный учебник. сделать это чисто.

person mchv    schedule 29.08.2012
comment
Этот учебник выглядит хорошо. Это слишком безумно, никто еще не превратил это в плагин. Я должен подумать об этом. - person myyk; 30.08.2012
comment
Хорошая идея ! это будет полезный небольшой плагин. - person mchv; 30.08.2012
comment
Я только что начал над этим работать. Небольшой плагин, вдохновленный учебником Джеймса. Я дам вам знать, когда он заработает. - person mchv; 30.08.2012
comment
Круто, я взволнован. Мне все еще нужно завершить перенос моего приложения в Play 2, прежде чем я смогу его использовать. Хотя посмотрю, когда будет готово. - person myyk; 31.08.2012
comment
Эй, какие-нибудь обновления по этому плагину? Наконец-то я перенес достаточно своего сайта, чтобы протестировать его. - person myyk; 09.10.2012
comment
Я только что выпустил самую первую версию. Пожалуйста, дайте мне знать, если что-то не работает, как ожидалось. Модуль действительно крошечный, в основном он не позволяет вам писать и поддерживать десять или около того строк. Кстати, он должен работать с любым другим провайдером CDN. - person mchv; 17.10.2012
comment
Хорошо, спасибо. На самом деле я написал свой собственный плагин, пока ждал вашего. Он работает немного по-другому, так как вам не нужно писать какой-либо код, чтобы использовать его, так как я делаю некоторые хакерские операции, чтобы сделать контроллер доступным. github.com/ChazInc/play-cdn - person myyk; 18.10.2012