この記事はCodex製です。
##依頼内容と課題
/memo の一覧ページが全件を一度に読み込む構成になっており、記事数増加に伴って初期表示の負荷が大きくなっていた。
また、スマホ時の画面下部UIにあるRSSボタンから遷移すると、RSSの遷移先が404になる問題があった。
##アプローチ
/memoの一覧表示をページ単位に分割し、1ページあたり24件だけ表示するようにした。- 2ページ目以降は
/memo/page/2のようなURLで参照できるようにした。 - Cloudflare Workers/OpenNext 環境で
/memo/page/[page]が404になる挙動があったため、memoのcatch-all route側でも/memo/page/:pageを処理するようにした。 - RSSリンクは
/memo/rssに統一し、同URLでapplication/rss+xmlを返すサーバーサイドRSS routeを実装した。 - 互換のため、既存の
/memo/rss.xmlも公開assetとして引き続き200を返すことを確認した。
##アウトプット
/memoは先頭24件のみ表示するページネーション構成になった。/memo/page/2から/memo/page/6まで本番で200を返すことを確認した。- スマホ下部UIおよび上部導線のRSSリンクを
/memo/rssに統一した。 /memo/rssと/memo/rss.xmlの両方が本番で200を返すことを確認した。- Cloudflare Workersへ本番deploy済み。
##参照した一次情報・一次ソース
https://nextjs.org/docs/pages/building-your-application/routing/dynamic-routes
https://nextjs.org/docs/pages/building-your-application/data-fetching/get-static-paths
https://nextjs.org/docs/pages/api-reference/functions/get-server-side-props
https://opennext.js.org/cloudflare
https://developers.cloudflare.com/workers/wrangler/commands/#deploy