Firebase HostingでCache-Controlヘッダーを設定する

Firebase HostingでCache-Controlヘッダーを設定する
公開日時

このブログをPWA対応したのに合わせて、Lighthouseでサイトのパフォーマンスについて調べてみた。

最初Performanceの項目が82点だったので対応方法の解説を見ていたところ、jsとcssのキャッシュ時間が1時間になっているので修正せよと書かれていた。

FirebaseHostingの設定はいじっていなかったので、デフォルトで1時間が設定されていた模様。

そこで、[[firebase.json]]にheadersを追加して、jsとcssのキャッシュ時間を1年に設定した。

{
  "hosting": {
    "public": "dist",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ],
    "headers": [
      {
        "source": "**/*.@(js|css)",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "max-age=31536000"
          }
        ]
      }
    ]
  }
}

Gridsomeはビルド時にハッシュ値をつけてくれるようになっているので、長期間キャッシュする設定を入れても古いキャッシュが参照され続けてしまう問題は発生しない。

この対応を入れたところPerformance項目が92点になったのでひとまずはOKとする。

参考


Related #firebase

Firestore エミュレータ使用時にデータをリセットする

エミュレータの場合のみ一括削除用のAPIが用意されている

Error: Input required and not supplied: firebaseServiceAccount

Dependabotによって作成されたPull Requestのみで発生している

Firebase公式Github ActionsでPull RequestごとにHostingのプレビュー環境を作る

手軽にプレビュー環境で動作確認できるようになったので、継続的なアップデートがやりやすくなった