作者 q3boy 總結動態網站生成靜態頁面的三種核心思路與兩種具體實現策略,分析優缺點與適用場景。
file_put_contents() 寫檔。echo 輸出,但用 ob_start() 捕獲輸出緩衝,最後取得內容寫檔。fetch()/get() 取得渲染結果寫檔。.html → 前台連結直接指向靜態檔。.html → PHP 檢查檔案是否存在/過期 → 不存在則生成並重導向/輸出 → 存在則直接重導向/輸出。mod_rewrite 將 .php 偽裝為 .html 利於 SEO。flock() 或 Redis 分散式鎖防止緩擊穿透;設定合理過期時間。RewriteRule ^article/(\d+)\.html$ /view.php?id=$1 [L] 讓動態腳本呈現靜態 URL。/static/年/月/日/文章ID.html 避免單目錄檔案過多影響檔案系統效能。如今更流行 SSG (Static Site Generator) 如 Hugo、Next.js (SSG 模式)、Nuxt.js,或 Edge Side Includes (ESI)、Varnish/Nginx fastcgi_cache 等 HTTP 層快取方案,將「生成靜態」從應用層下沉到基礎設施層。
選擇策略取決於更新頻率、流量規模、團隊技術棧。低更新高流量適合策略一;高更新中流量適合策略二;現代專案建議評估 SSG 或 HTTP 快取方案替代傳統 PHP 生成靜態頁。