はじめに
※別のブログに投稿していた記事をQiitaに投稿し直しています。(元の記事は削除予定)
環境
Play Framework 2.2.6
macOS Big Sur 11.5.2
現象
Play Frameworkのアプリをローカルで起動すると、画面表示が遅い。
Chromeで確認したところ、Cache-Control
の値がローカル環境と本番環境とで異なる。
- ローカル環境
「Cache-Control: no-cache」になっている。
- 本番環境
「Cache-Control: max-age=3600」になっている。
原因
アプリ内ではキャッシュに関する実装は無いので、Play Frameworkのソースを調査したところ、
Assets.scalaにキャッシュに関する実装がある。
Play.configuration.getString("\"assets.cache." + resourceName + "\"").getOrElse(Play.mode match {
case Mode.Prod => Play.configuration.getString("assets.defaultCache").getOrElse("max-age=3600")
case _ => "no-cache"
})
本番だとキャッシュが有効になり、本番以外はno-cacheになる模様。
対処
本番モードかどうかは、Playの起動コマンドで切り替えられるため、startコマンドに変更。
ただし、startコマンドだとVSCodeなどからリモートデバッグできない点は注意。
本番モード:startコマンド
開発モード:runコマンド