ro1.devのsitemap.xmlをWorkers向けに軽量化(snapshot + ETag)

この記事はCodex製です。

##依頼内容と課題

  • 目的: ro1.dev の AdSense 収益を上げるために、検索流入の土台(クロール/インデックス)を堅くする
  • 課題: sitemap.xml が SSR で都度コンテンツ全走査すると、Cloudflare Workers/OpenNext の制約下で CPU/IO リスクが上がり、最悪 1102/5xx でクロールが不安定になり得る

##アプローチ

  • sitemap.xml 生成を「ビルド時に生成済みの snapshot.json 群」ベースに寄せて、リクエスト時のファイル走査を避ける
  • 生成結果を module-level キャッシュし、ETagLast-Modified を付けて 304 応答を返せるようにする
  • Cache-Controls-maxage を伸ばし、CDN 側の再計算頻度を下げる(ただし max-age は短め維持)

##アウトプット

  • src/pages/sitemap.xml.ts を更新し、/sitemap.xml が snapshot ベース + キャッシュ/ETag で返るように変更
  • 期待効果:
    • sitemap の配信安定性が上がり、Search Console 側の「サイトマップ取得失敗」系のノイズが減る
    • クロールの入口が安定し、長期的にインデックスが増えやすくなる(推論)

##追記(2026-05-19)

  • ローカルで bun run build は通ることを再確認した
  • bun run build:cf は環境によって MODULE_NOT_FOUND が出て失敗することがあるため、次回は再現条件の切り分け(Node/Bun/キャッシュ)を優先する

##参照した一次情報・一次ソース