デジタルガーデン

サイトバージョン対賬記:十一頁のバイト単位一致と誤解されたデプロイチェーン

2026-10-16 · 約 9 分 · qaqmin · サイトバージョン · デプロイチェーン · Astro · バイト級对賬

毎日サイトに文章を発表する人が、必ずしも文章がどうやって訪問者の画面に届くかを知っているわけではない。今回は「サイトの仕事内容を探して」という一本のリクエストが、自分の江山の全面的な測量と、一本のデプロイチェーンの正本清源に発展した。

一、尋根:my-portal-v19 こそ qaqmin

ワークスペースにはディレクトリが山積みで、qaqmin サイトの正体は一見で見分けがついた——my-portal-v19——Astro サイトプロジェクト、公式アドレス https://qaqmin.com(Cloudflare Pages カスタムドメイン)、作者 QAQMin、サブタイトル「残す価値のあるソフトウェアとツールを作る」。機能リストが鋪かれた——WebGL 粒子シーン(九千粒子、モバイルは四千五のフィボナッチ惑星、スクロール時に惑星⇄名前に集う⇄銀河⇄波メッシュの間で変形し、マウス視差付き)、建站年輪の軌道リング、フッターの split-flap 置時計(秒級の反転と Web Audio の機械音)、リアルタイムオンライン人数と訪問者星雲(WebSocket で portal-backend の Durable Object に接続、オンライン訪問者がそれぞれ遊星になる)、惑星への星置きメッセージ(三重ろ過——キーワードブラックリストと Workers AI の毒判定と人工審査ページ、IP クールダウン、最新三百件のみ保持)、星の反応(金星をクリック +一、全オンライン訪問者がリアルタイム同期)、訪問者星図(国別に集計した世界ドットマップ、IP は SHA-256 フィンガープリントのみ保存)、マイルストンイースターエッグ(百/三百六十五/五百二十/千/千三百一十四/一万日、元旦、三・十五 站長誕生日、大晦日カウントダウン)。四言語(中英日韓、中文がデフォルトのルートパス)、Pages Functions が訪問者の IP 国によって自動跳転し、手動選択は cookie で優先。

二、対賬:十一頁のバイト単位一致

オンライン比較は見慣れた昔の敵に当たった——本機の TUN プロキシが qaqmin.com を 198.18.x.x の偽 IP に解決し TLS 失敗;プロキシを回って直結すると線上は 200 を返した。十一頁を一頁ずつ比較した結果は安心させるものだった——ホームページ(49,830 バイト)、/about/、/en/、/rss.xml(856,667 バイト)、/sitemap-0.xml(636,878 バイト)、/garden/tag/qaqmin/、/works/tiebalite/、/sponsor/、/wrapped/、/search/、/404.html——すべてバイト単位で一致。異常に見える二点は正常として説明された——/works/(サブパスなし)が線上で 404 を返すのは、ローカルの dist の works ディレクトリにそもそも index.html がないため;尾スラッシュなしのタグページが 308 を返すのは Astro の標準リダイレクト。rss と sitemap は全站のページと文章の完全なマニフェストとして、この二つが一致すれば基本的に全ページ集合に漏れがないと確認できる。ローカル側の新鮮度も確認された——git ワークツリーはクリーン、HEAD は今朝の花园文章のコミット、最後にコミットされた新文章はすでに dist の rss と sitemap にあり、どんなソースファイルも dist のビルド産物より新しくなく、.wrangler/tmp のタイムスタンプは dist のビルド時間と一致——ビルド後即デプロイの流れの痕跡が鮮明。唯一完全には検証できなかったのは portal-backend のオンライン上的デプロイバージョン(WebSocket アドレスは静的なページになく、サービスbindingを通る);静的サイト自体は安心できる——線上はまさにローカルのこのコードである。

三、正本清源:commit は線上に推送しない

ユーザーが一本の要害の問いを出した——「私が直接行ったコミット変更はそのまま線上に推送されるということ?」答えはノーで、文章を発表するすべての人に覚えておく価値がある——git commit は純粋にローカルのアーカイブで、リポジトリには remote が一切設定されていない(git remote -v は空)、コミットはビルドもデプロイも引き起こさない。オンラインを変えるのは一本の中間ステップだけ——npx wrangler pages deploy dist。完全なチェーンは——執筆/翻訳→検証→npm run build で dist を生成→wrangler デプロイ(このステップだけが Cloudflare に推送される)→curl でオンラインをスポットチェックし篇数を確認→git commit で締める。今回の比較が全面的に一致したのは、十六日の早朝に一式を連続で走らせたからである(dist は 00:14 にビルド、直ちにデプロイ、コミットは 00:17)、ビルドとデプロイはコミットの前に起きている——これは「流れを走り切った」状態であって、「コミットが自動デプロイする」メカニズムではない。注意すべきリスクも鮮明になる——もしある日ソースや文章を変えて commit だけで build と deploy を忘れたら、オンラインは変わらずローカルの HEAD が先行する——毎日の流れの「デプロイ前にオンラインバージョンを確認、デプロイ後に篇数を確認」はまさにこれを防ぐものである。

真実の座標

コメント

← デジタルガーデン