未分類
発生していた現象
- 本番で
/blogをリロードすると一覧が空になる。 - ブログ一覧から記事詳細への初回遷移は体感 ~1s かかる(2回目以降は速い)。
対応で試したことと結果
- デプロイ方式を SSG に固定
package.jsonをpnpm generate && wrangler pages deploy distに変更し、postgenerateでdist/_routes.jsonを再生成。- 結果:
/blogリロードで一覧が正しく表示されるようになった。__nuxt_contentへの D1 呼び出しは発生しない。
- 記事ページの余計なクエリ削減
app/pages/[...slug].vueで、単一記事表示時はqueryCollection("pages").all()を実行しないようガード。ディレクトリ一覧時のみ必要フィールドに絞って取得。- 期待:
_payload.jsonの肥大化抑制 → 初回遷移のデータ転送量を削減。
- NuxtLink プリフェッチを有効化
ArticleTable.vueとBlogCalendar.vueの:prefetch="false"を削除しデフォルト有効に戻した。- 期待: 一覧→記事への初回遷移で必要チャンクを事前取得し体感を短縮。
- デプロイ時のパス誤り修正
.output/publicではなくdistをデプロイ対象に統一し、postgenerateも同じパスで動くよう修正。- これにより
wrangler pages deploy distがエラーなく通る。
参考ログ
pnpm deploy:cloudflare実行時、Nuxt generate で 127 ルート prerender 済み(dist/_payload.json生成)。- 生成物サイズ例:
dist/blog/_payload.json約 56 KB、search/_payload.json約 5.7 MB(検索ページは大きい)。 - 本番での簡易計測:
https://log.eurekapu.com/2025-12-06/thinkpad-trackpoint-keyboard-scroll-fix初回取得 ~0.4s、_payload.json約 6 KB。
現状の結論
- 一覧リロード問題は SSG 固定で解消。
- 初回遷移はプリフェッチ有効化と
_payload縮小で改善見込み。さらに短縮したい場合は、クライアント側で不要な sqlite WASM 読み込みを避ける(server: trueオプションでサーバ取得に限定する)など追加チューニング検討。