Play が GZipped JS と CSS をブラウザに送信するようにします。Build.scala で、追加しました
val gzipAssets = TaskKey[Seq[File]]("gzip-assets", "GZIP all assets")
lazy val gzipAssetsSetting = gzipAssets <<= gzipAssetsTask
lazy val gzipAssetsTask = (gzippableAssets, streams) map {
case (finder: PathFinder, s: TaskStreams) => {
finder.get.map { file =>
val gzTarget = new File(file.getAbsolutePath + ".gz")
IO.gzip(file, gzTarget)
s.log.info("Compressed " + file.getAbsolutePath + " " + file.length / 1000 + " k => " + gzTarget.getName + " " + gzTarget.length / 1000 + " k")
gzTarget
}
}
}
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
// Twitter Bootstrap v2.0.1 compilation (https://plus.google.com/u/0/108788785914419775677/posts/QgyUF9cXPkv)
lessEntryPoints <<= (sourceDirectory in Compile)(base => ((base / "assets" / "stylesheets" / "twitterbootstrap" / "styles.less"))),
// set up gzip of assets
gzippableAssets <<= (resourceManaged in (ThisProject))(dir => ((dir ** "*.js") +++ (dir ** "*.css"))),
gzipAssetsSetting,
playPackageEverything <<= playPackageEverything dependsOn gzipAssets
).settings( ...
dist すると、ターゲットにファイルが生成されます。
[情報] 圧縮 /Users/wimha/Documents/**/target/scala-2.9.1/resource_managed/main/public/stylesheets/twitterbootstrap/styles.min.css 183 k => styles.min.css.gz 27 k
しかし、製品では、ファイルは利用できません:
リソースの読み込みに失敗しました: サーバーは 404 (見つかりません) のステータスで応答しまし たhttp://ec2-54-228-70-193.eu-west-1.compute.amazonaws.com/assets/stylesheets/twitterbootstrap/styles .min.css.gz
2 つの質問があります。
- ファイルが利用できないのはなぜですか?
- より良い解決策はありますか?多分モジュールで?GreenScript 以外に興味深いものは見つかりませんでしたが、これは Play 1.x のみのものです。アセットも 1 つのファイルにマージしたいと考えています。
ありがとうジュリアン