Cloudflare Pages 部署成功但網站沒更新?小企業 GitHub 架站最容易搞混的 4 個發文環節
小企業用 GitHub 和 Cloudflare Pages 維護靜態網站時,常會遇到文章已 commit、部署也看似成功,但公開網站沒有更新或出現 404。這篇從 printapp.uk 手動貼文經驗出發,整理 commit、build、deploy、cache 與公開網址驗收的差異。
Cloudflare Pages 部署成功但網站沒更新?小企業 GitHub 架站最容易搞混的 4 個發文環節
小企業自己用 GitHub 架站,最容易遇到一種很尷尬的狀況:
文章明明貼了。
檔案明明 commit 了。
Cloudflare Pages 看起來也有部署。
可是打開公開網址,文章就是沒有出現。
有時候是部落格列表沒更新。
有時候是文章頁直接 404。
有時候舊文章正常,新文章卻不見。
這種問題最麻煩的地方是:每個環節看起來都像成功,但最後公開網站沒有成功。
今天這篇不是抽象講網站部署,而是用 printapp.uk 手動貼文流程來整理一個很實際的觀念:GitHub 架站時,commit、build、deploy、cache / route 是四個不同環節。任何一段沒有接上,最後使用者看到的網站都可能不是你以為的版本。
第一個環節:GitHub commit,不等於網站已經更新
很多人第一次用 GitHub 後台貼文時,會以為按下 Commit changes 就代表網站已經更新。
其實不是。
GitHub commit 只代表檔案已經寫進 repo。
例如新增文章時,正確檔案可能是:
src/content/blog/cloudflare-pages-github-deploy-success-site-not-updated.md
按下 commit 後,這個檔案會進入 GitHub 的 main branch。
但這時候公開網站還不一定有任何改變。
因為靜態網站還需要下一步:Cloudflare Pages 讀取 repo,執行 build,產出新的靜態檔案,再部署到公開環境。
所以第一個檢查點是:
文章檔案是否真的存在於 GitHub?
是否在正確路徑?
是否 commit 到 main branch?
檔名是否和預期網址 slug 一致?
如果這一步錯了,後面看 Cloudflare 也沒用。
例如檔案放錯資料夾,Cloudflare 就算部署成功,也不會產生你預期的文章頁。
第二個環節:build 成功,不等於文章一定被收進去
Cloudflare Pages 會從 GitHub 拉取程式碼,然後執行網站的 build 指令。
對 Astro 這類靜態網站來說,build 會把 markdown 文章、頁面、樣式與路由整理成公開網站可以使用的檔案。
但 build 成功,不代表每篇文章都一定被正確收進去。
例如前面遇過一個很典型的問題:文章檔案放在 src/content/blog/,但 frontmatter 欄位寫錯。
網站現有文章格式需要:
title
date
summary
code
category
但如果文章開頭寫成:
pubDate
description
tags
summaryCode
這就可能讓網站讀不到正確資料,或讓文章列表無法照預期呈現。
這種情況很容易讓人誤會是部署失敗。
實際上,檔案有 commit,Cloudflare 也可能有 build,但文章資料格式不符合網站程式期待。
所以第二個檢查點是:
Cloudflare Pages 最新 build 是 Success 還是 Failed?
如果 Failed,錯誤訊息指向哪個檔案?
如果 Success,新文章有沒有被文章列表讀到?
frontmatter 是否符合網站現有格式?
這一步不能只看「部署有跑」,還要看「網站有沒有把文章收進內容集合」。
第三個環節:deploy 成功,要確認是不是最新版本
Cloudflare Pages 的 Deployments 頁面會顯示部署狀態。
但有時候使用者會只看見一個 Success,就以為最新文章一定上線了。
這裡要更小心。
要確認的是:成功的 deployment 是不是對應你剛剛那次 commit。
如果你剛 commit,但 Cloudflare 最新成功部署仍然是前一個 commit,那公開網站當然不會有新文章。
也可能出現最新 deployment 失敗,但上一版成功版本還在,所以公開網站看起來正常。這時候舊文章可以開,新文章沒有出現,原因不是公開站壞掉,而是新版本沒有部署成功。
比較好的檢查方式是:
到 Cloudflare Pages。
打開對應專案。
進入 Deployments。
看最新一筆是否是 Success。
看時間是否在你剛 commit 之後。
如果有 commit hash 或部署訊息,要確認它對應剛剛的 GitHub commit。
這個步驟很重要,因為公開網站正常不代表最新版本正常。
有些人看到首頁可以開,就以為部署成功;但首頁可能是上一版留下來的。
第四個環節:cache、route 和公開網址驗收
即使 commit、build、deploy 都成功,最後仍然要開公開網址驗收。
這一步不能省。
對部落格文章來說,至少要檢查兩個地方。
第一,文章列表頁。
例如:
https://printapp.uk/blog/
新文章應該要出現在列表中,標題、摘要、日期、分類要正常。
第二,文章詳細頁。
例如:
https://printapp.uk/blog/cloudflare-pages-github-deploy-success-site-not-updated/
這個網址要能正常開啟,不能 404,也不能只顯示半篇文章。
如果列表有出現,但文章頁 404,可能是路由或 slug 問題。
如果列表沒有出現,但檔案已存在,可能是 frontmatter、content collection 或 build 問題。
如果文章頁可以開,但內容少了一半,可能是 markdown 內容中有特殊格式導致貼文截斷。
如果舊內容還在,新內容看不到,才需要再考慮 cache 或部署延遲。
公開網址驗收不是形式,而是最後一關。
GitHub 和 Cloudflare 後台都只是中間狀態,真正給讀者看的,是公開網址。
為什麼小企業特別容易卡在這裡?
大型團隊通常會有工程師、CI/CD 流程、preview environment、錯誤監控與部署記錄。
小企業自己維護網站時,常常是同一個人負責寫文章、貼 GitHub、看 Cloudflare、開網址測試。
這種情況下,最容易把不同環節混在一起。
以為 commit 就是部署。
以為部署成功就是文章成功。
以為網站首頁正常就是最新版本正常。
以為 404 一定是網址錯。
以為 Cloudflare 有 Success 就不用再測公開頁。
這些誤判都很常見。
所以小企業用 GitHub 架站,不一定需要很複雜的工具,但一定要有清楚檢查順序。
手動貼文後,最少要做 5 個確認
printapp.uk 後續每次手動貼文,應該固定做 5 個確認。
第一,確認檔案位置。
文章要在:
src/content/blog/
不是 repo 根目錄,也不是錯的資料夾。
第二,確認檔名。
檔名要和預期網址 slug 對得起來。例如檔名是:
cloudflare-pages-github-deploy-success-site-not-updated.md
預期網址就是:
/blog/cloudflare-pages-github-deploy-success-site-not-updated/
第三,確認 frontmatter。
開頭欄位要使用網站現有格式:
title / date / summary / code / category
不要臨時換成其他欄位。
第四,確認 Cloudflare Deployments。
要看最新一筆是不是成功,而且時間要在剛剛 commit 之後。
第五,確認公開網址。
一定要打開文章網址,不只看 GitHub,不只看 Cloudflare。
這 5 個確認做完,才算貼文完成。
遇到網站沒更新,不要一開始就亂改程式
當公開網站沒更新時,最怕的不是錯誤本身,而是排查順序亂掉。
有些人一看到 404,就去改 route。
有些人一看到網站沒更新,就重新貼文章。
有些人懷疑 Cloudflare cache,先清快取。
有些人以為 GitHub 壞掉,又重建檔案。
這樣很容易把簡單問題變複雜。
比較穩的順序是:
先看檔案是否在正確路徑。
再看 commit 是否進 main。
再看 frontmatter 是否符合格式。
再看 Cloudflare 最新 deployment。
最後再看公開網址與 cache。
這個順序可以避免一開始就動到不該動的地方。
很多時候,問題只是文章欄位寫錯,或 commit 還沒對應到最新部署。
這次流程修正後,手動貼文要更像工單
手動貼文看起來只是複製 markdown,但其實它也是一個小型發布流程。
所以每次貼文最好固定留下四個資訊:
檔名。
repo 路徑。
完整文章內容。
發布後公開網址。
這四項缺一個,都可能讓後續排查變麻煩。
如果只知道文章標題,不知道檔名,就很難快速找到檔案。
如果只知道 GitHub 有貼,不知道公開網址,就無法確認路由。
如果只知道網址 404,不知道檔案路徑,就不知道問題是在 GitHub 還是 Astro。
所以小企業手動維護網站,不要只把它當貼文字,而要把它當作一個輕量發布工單。
結論:部署成功只是中間站,公開網址正常才算完成
Cloudflare Pages 部署成功但網站沒更新,通常不是一句話能判斷原因。
它可能是檔案沒有 commit。
可能是檔案放錯位置。
可能是 frontmatter 不符合 Astro 網站格式。
可能是 build 失敗。
可能是 deploy 不是最新 commit。
也可能是公開網址、路由或 cache 還沒對上。
所以小企業用 GitHub 和 Cloudflare Pages 架站時,要把發文流程拆成四個環節看:
commit 是檔案進 repo。
build 是網站產生靜態檔。
deploy 是新版本送到公開環境。
公開網址驗收才是讀者真的看得到。
不要把其中一個成功,當成整個流程成功。
下一次文章貼完後,不只要問「GitHub 有沒有存檔」,也要問:
Cloudflare 有沒有 build 成功?
最新 deploy 是不是這次 commit?
文章列表有沒有出現?
公開網址能不能開?
這幾個問題都通過,才叫真正發文完成。