動的sitemap・robotsの生成とキャッシュ

商品の増減に追従するsitemap.xmlの自動生成と、生成コストを抑えるキャッシュ設計

sitemaprobots.txt動的生成キャッシュインデックス
読了時間: 8分

はじめに

sitemap.xmlは、検索エンジンに「このサイトにはこんなページがありますよ」と一覧を渡すための地図のようなものです。
商品が数千から数万SKUあるECで、これを手動で管理するのは現実的ではないですよね。

この記事では、モーターサイクル用品を扱うヘッドレスECで、商品やカテゴリの増減に自動で追従するsitemap.xmlとrobots.txtをどう生成し、生成コストをキャッシュでどう抑えたのかを解説します。あわせて、重複URLを防ぐEdgeミドルウェアでのURL正規化にも触れます。

sitemapとrobotsを動的に生成する

なぜ動的生成が必要か

商品は日々追加され、売り切れて消えていきます。静的なsitemapを一度作って置いておくだけでは、新商品がいつまでもインデックスされなかったり、消えた商品のURLが残り続けたりします。ヘッドレスではテーマが自動更新してくれていたこの仕組みが消えるので、自前で用意する必要があります。

そこで、リクエストのたびに現在の商品・カテゴリ一覧からsitemap.xmlを組み立てる動的生成にしました。robots.txtも同様に動的に返し、クロールしてほしいURLと、してほしくないURLを制御します。

動的sitemap生成の流れ
リクエスト受信

検索エンジンが sitemap.xml をリクエスト

キャッシュ確認

生成済みキャッシュがあればそれを返す

商品・カテゴリ取得

キャッシュがなければ最新の一覧を取得

XML生成とキャッシュ

sitemap.xmlを組み立て、結果をキャッシュに保存

noindexで見せたくないページを制御

すべてのページをインデックスさせたいわけではありません。たとえば販売チャネル外の商品や、検索に出したくないページはnoindexを指定して除外します。sitemapに載せるのは「検索に出したいURL」だけに絞り、robots.txtやmetaのnoindexで見せたくないものを抑える。この二段構えで、クロールの無駄を減らしています。

生成コストをキャッシュで抑える

毎回フル生成は重い

数万SKUの一覧を毎リクエストで取得してXMLに組み立てるのは、それなりに重い処理です。クローラーが頻繁にアクセスするたびにフル生成していては、サーバーにもデータソースにも負荷がかかります。

そこで、生成したsitemapの結果をキャッシュし、一定期間は同じ内容を返すようにしました。商品の増減はキャッシュの有効期限が切れたタイミングで反映されるので、鮮度と負荷のバランスを取っています。

キャッシュの有無による違い
キャッシュなし

毎リクエストで数万件を取得・生成。負荷が高い

キャッシュあり

有効期限内は生成済みを再利用。負荷を大幅に削減

統計APIで監視する

自動生成に任せきりにすると、「気づいたらsitemapのURLが激減していた」といった事故に気づけません。そこで、sitemap内のURL数などを返す統計APIを用意し、生成結果を監視できるようにしました。URL数が急に変動したら、データ取得の失敗や設定ミスを疑うサインになります。

URL正規化で評価の分散を防ぐ

重複URLはなぜ問題か

同じ商品でも、URLに大文字が混ざっていたり、トラッキング用のクエリパラメータが付いていたりすると、検索エンジンは別々のURLとして扱うことがあります。すると本来1ページに集まるべきSEO評価が複数のURLに分散し、どれも中途半端な評価になってしまうんです。

Edgeミドルウェアで301統一

これを防ぐため、Edgeミドルウェアで正規化を行っています。大文字混在のURLは小文字に、不要なクエリパラメータは除去した上で、正規のURLへ301リダイレクトします。301は「恒久的に移動した」という意味なので、評価も正規URLへ引き継がれます。

Edgeで処理するので、アプリ本体に到達する前に軽量に正規化でき、全ページに一貫して効かせられます。

まとめ

動的sitemapとrobotsは、商品の増減に自動で追従しながら、キャッシュで生成コストを抑えるのが要点です。統計APIでURL数を監視し、静かに進行する事故を防ぐ。さらにEdgeミドルウェアでURLを正規化し、重複による評価の分散を防ぐことで、検索エンジンから見たサイトの一貫性を保っています。

ここまでの「SSR可視化」「構造化データ」「動的sitemap・正規化」が揃うと、ヘッドレスでも失われがちなSEOを取り戻せます。全体像は「ヘッドレスECのSEO設計」にまとめているので、そちらもぜひご覧ください。