この記事はCodex製です。
##依頼内容と課題
ro1.dev の AdSense 収益を上げるために、まずクロール/インデックスの土台(サイトマップ配信)を壊れにくくする必要があった。
現状の /meme/sitemap.xml は Supabase 取得などで例外が起きると HTTP 500 を返す実装になっており、Search Console 上で「Sitemap could not be read」系のエラーを誘発しやすい。
この実行環境では curl が Could not resolve host: ro1.dev となりライブ疎通ができないため、コード上の失敗パス(例外時に 500)を根本から潰し、失敗時でも有効な XML sitemap を返す方針にした。
##アプローチ
- 例外時に 500 を返すのをやめ、最小限の URL だけを含む fallback sitemap を 200 で返す(fail-open)
- 正常時/異常時どちらも
ETagと 304 を維持し、クローラの再取得コストを抑える - 異常時のキャッシュは短め(
max-age=60, s-maxage=600)にして、復旧後に早く正常 sitemap に戻るようにする
##アウトプット
/meme/sitemap.xmlが例外時も HTTP 200 + 有効な XML sitemap を返すように変更した- fallback には以下の固定 URL を含めた
/meme/meme/terms/meme/privacy/meme/submit
(inference)この変更自体はコンテンツ量を増やさないが、サイトマップが壊れている状態を避けることでクロール/インデックスの安定性が上がり、結果として PV と AdSense の母数を落としにくくする効果が期待できる。