當資料庫成為過去式:從 Markdown、YAML 一路聊到 IgG Flat CMS 的極簡哲學

當資料庫成為過去式:從 Markdown、YAML 一路聊到 IgG Flat CMS 的極簡哲學

日期:2026-06-13 | 作者:SoloMan | 標籤: 技術 教學

前言:在速度與繁複之間,我們還有第三條路

2026 年的 Web 開發世界,似乎正走向一個極端。一面是像 WordPress 那樣,功能強大,但背後綁著 MySQL 資料庫,每次改版、搬家、備份都像是一場惡夢;另一面是 SPAs 或 Next.js,雖然體驗流暢,但開發前的環境建置與 node_modules 黑洞,常常讓人望而卻步。

難道,想在網路上有個輕巧、快速的窩,就必須得承受這些重量嗎?

在我看來,答案是否定的。今天,我想從三個最基礎的技術談起,介紹什麼是「純檔案 CMS」(Flat-File CMS),最後帶你認識一個近期在社群中引起討論的作品——IgG Flat CMS。它將整套系統的體積壓縮在 1MB 以內,希望能為想快速建立個人網站或小型企業形象站的人,提供一個真正輕量、直覺的選擇。

1. 三位一體:構成現代輕量網站的基石 (Markdown, YAML, JSON)

要理解純檔案 CMS 的奧妙,我們得先認識構成它的三塊積木。這三種格式,各自在「內容」、「設定」與「溝通」的領域中,扮演著不可或缺的角色。

📝 Markdown:讓寫作回歸純粹

Markdown 是一種輕量級標記語言,由 John Gruber 與 Aaron Swartz 於 2004 年共同設計。它的核心設計理念就是「易讀易寫」——希望人們用純文字格式寫作,而這份文件本身即便未經渲染,也依然清晰可讀。Markdown 的語法由精心挑選的標點符號組成,例如在文字兩旁加上 * 星號就像強調,清單看起來就是清單,區塊引言看起來就像真的在引用一段文字。正因如此,Markdown 現已成為世界上最受歡迎的標記語言之一,廣泛應用於 GitHub、各類部落格平台和筆記工具。它讓創作者專注於內容本身,而非排版的繁文縟節。

📖 附錄:Markdown 常用語法速查表
如果你剛接觸 Markdown,以下是最常用的幾個語法,五分鐘就能上手:

你想呈現的效果 輸入的語法 渲染結果(示意)
標題 # 一級標題
## 二級標題
### 三級標題

一級標題

二級標題

三級標題

粗體與斜體 **粗體**__粗體__
*斜體*_斜體_
粗體斜體
列表 - 無序列表項目
1. 有序列表項目
• 無序列表
1. 有序列表
連結 [顯示文字](https://example.com) 顯示文字
圖片 ![替代文字](圖片網址) 顯示圖片
引用區塊 > 這是一段引用文字 >這是一段引用文字
行內程式碼 `code ` code
程式碼區塊 ```
多行程式碼
```
等寬字體區塊
分隔線 ---*** 一條水平線
表格 \| 標題1 \| 標題2 \|
\|-------\|-------\|
\| 內容1 \| 內容2 \|
簡易表格

這些語法幾乎涵蓋了寫文章 90% 的需求。更棒的是,你可以用任何純文字編輯器(甚至記事本)直接撰寫,完全不需要昂貴的排版軟體。

📄 YAML:人類與機器的溝通橋樑

如果 Markdown 負責「內容」,那麼 YAML 就是負責「設定」。YAML 是一種專門為數據設計的序列化格式,也是 JSON 的超集合(也就是說,任何合法的 JSON 文件,也都是合法的 YAML 文件)。它的設計哲學是 「數據優先」 ,同時兼具「可讀性優先」與「語法簡潔性」三大優勢。YAML 透過縮排來定義資料層次,避免了 XML 中繁雜的開閉標籤,使得設定檔的結構一目了然。在純檔案 CMS 的生態中,YAML 普遍被用在兩個地方:

  1. Front Matter:位於 Markdown 檔案最頂端的 YAML 區塊(以 --- 分隔),用來定義該篇文章的元資料,如標題、日期、標籤、作者等。
  2. 系統設定:儲存網站的整體設定,如網站標題、選單結構等。

🔄 JSON:Web 世界的通用語

最後一個主角是 JSON。如果說 YAML 是給「人」看的設定檔,那 JSON 就是給「機器」看的通用格式。JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,以易於人類閱讀和編寫、易於機器解析和生成而聞名。它「與語言無關」,這意味著它幾乎可以用在任何程式語言中,不論是前端 JavaScript、後端 PHP 或 Python,都能原生支援。JSON 的核心語法極其簡單,僅由「物件」(大括弧 {} 包裹的鍵值對集合)與「陣列」(中括弧 [] 包裹的值列表)組合而成。正因如此,它在 API 設計與伺服器、客戶端之間的資料傳輸中,扮演著無可撼動的關鍵角色。可以說,當你的 CMS 需要與前端框架對話,或輸出結構化資料時,就是 JSON 的用武之地。

2. 什麼是純檔案 CMS (Flat-File CMS)?

認識了這三種格式後,我們來看看它們是怎麼被組合起來的。傳統的 CMS 系統(如 WordPress),會將一篇文章的「標題、內文、作者、日期」等資料,分別打散儲存在資料庫的不同資料表中。每當有人瀏覽網頁,伺服器就必須執行一次 SQL 查詢,把這些零散的資料「拼裝」回來。這個過程不僅耗費伺服器資源,也增加了系統的複雜度和潛在的安全風險。

純檔案 CMS 則徹底顛覆了這個思維。它捨棄了 MySQL 或 PostgreSQL 這類關聯式資料庫,改為直接將資料儲存在檔案系統中的「純文字檔」裡。在你的網站目錄中,每一篇文章就是一個獨立的 .md(Markdown)檔案。該篇文章的標題、日期等資訊,就儲存在 Markdown 檔案最上方的 YAML Front Matter 區塊中。

當網站收到請求時,Pure-File CMS 只需去「讀取」那個檔案,解析出 Markdown 和 YAML 的內容,再將其填入 HTML 模板中。這個架構帶來了幾個顯而易見的優勢:

  • 飛快速度:沒有資料庫查詢的開銷,伺服器處理請求的速度極快,資源消耗極低。
  • 極簡部署:無需建立資料庫、無需設定連線憑證。透過 FTP 或 Git 將程式碼上傳到主機,網站就運作起來了。
  • 輕鬆備份與版本控制:由於整個網站的內容就是一個個的純文字檔,你可以使用 Git 來進行版本控制。每一次的修改都會留下紀錄,備份也只需複製整個檔案夾即可。

3. 不可諱言的限制:Flat-File CMS 做不太到(或很難做)的事情

然而,身為一個誠實的開發者,我不能只報喜不報憂。純檔案架構的輕盈,是以犧牲某些「複雜查詢與即時運算能力」為代價換來的。換句話說,SQL 能做的事情,純檔案 CMS 不一定能做得漂亮,甚至根本做不到。具體來說:

  • 關聯查詢與即時過濾:在資料庫中,想要「找出所有含『旅行』標籤、且發表於 2025 年之後、作者不是 A 君的文章」,只需要一行 SELECT ... WHERE ... AND ... NOT ... 就能毫秒級完成。但在純檔案系統中,你需要:
    1. 逐一讀取所有 .md 檔案。
    2. 解析每個檔案的 YAML Front Matter。
    3. 用程式碼自行過濾符合條件的文章。
    4. 隨著文章數量增加(例如超過數千篇),每次請求都得重複這個掃描過程,效能會直線下降。
  • 即時統計與聚合運算:資料庫擅長 COUNT, SUM, AVG 這類聚合函數。純檔案 CMS 要做到「顯示總文章數」、「計算某標籤下的文章平均字數」,同樣得先讀取全部檔案,再逐行統計。如果網站每天有數萬人瀏覽,這種方式很快就會拖垮伺服器。
  • 多使用者並行寫入的衝突處理:資料庫有交易 (Transaction) 與鎖定 (Lock) 機制,能確保兩個人同時編輯同一篇文章時,不會互相覆蓋對方的修改。純檔案系統依賴作業系統的檔案鎖定,但實作起來麻煩且不可靠。更嚴重的是,如果兩個人同時發文並試圖更新「熱門文章排行榜」這種匯總快取檔案,資料遺失的風險很高。
  • 模糊搜尋與全文檢索:資料庫的 LIKE 或全文索引,即使在上百萬筆資料中也能快速找到關鍵字。純檔案 CMS 若要搜尋,通常只能靠 grep 或自行遍歷檔案,不僅慢,而且難以做到「依相關性排序」。

那麼,為什麼我還是推薦純檔案 CMS?
因為對 個人部落格、小型形象網站、文件站、靜態作品集 這類情境來說,上述的「做不到」幾乎不會發生。你不會每天用 SQL 去問「找出所有含『旅行』標籤且發表於 2025 年的文章」——通常你只需要列出某個分類下的文章,或顯示最新 10 篇。這些操作,純檔案 CMS 透過簡單的目錄結構(例如 /posts/2025/travel/)或快取機制就能輕鬆應付。

更重要的觀念是:純檔案 CMS 不是要取代資料庫,而是選擇了一個更小的問題領域,並把它做到極致。 它放棄了複雜查詢的彈性,換取了極致的簡單、速度與可攜性。就像瑞士刀很好用,但你不會用它來砍樹;同樣地,別拿純檔案 CMS 去蓋 Facebook,但用它來打造一座屬於自己的數位花園,卻是恰到好處。

4. 極致潔癖的實踐:剖析 IgG Flat CMS 的「碳纖維美學」

概念聽起來很美好,但實際做出的產品是否也同樣迷人?IgG Flat CMS 就是這一概念的具體實踐。

在介紹它之前,我們先來看看它的官網介紹。IgG Flat CMS 由璦閣數位科技(IgG Digital Technology)創辦人 SoloMan 開發,他秉持著對程式碼的極致潔癖,親手打造了這套系統。那麼,它有什麼特點呢?

IgG Flat CMS 的設計哲學,正如其名,是一種極致的 「碳纖維美學」 ——也就是在保持強度的前提下,將重量減到最輕。它的技術亮點是:

  • 極致輕量:在安裝核心第三方套件(如 Parsedown、Symfony YAML)後,整包 CMS 的總體積硬是壓在 1MB 以內,打破了現代 Web 開發動輒數百 MB 的臃腫常態。
  • 零資料庫、純檔案架構:系統完全基於 MarkdownYAML 檔案運作,徹底擺脫了 MySQL 的沉重負擔與潛在的資料庫漏洞攻擊面。
  • 原生、無框架的前端:為了追求極致的效能,IgG Flat CMS 的前端完全使用原生 JavaScript(Vanilla JS)撰寫,拒絕任何第三方前端框架的肥大污染,確保頁面加載的原始速度。
  • 內建的安全防護:雖然體積小巧,但它在安全性上沒有妥協。系統內建了嚴格的跨站請求偽造(CSRF)攔截、密碼雜湊防護與路徑遍歷(Path Traversal)防禦機制,守護網站安全。
  • 直覺的視覺化後台:IgG Flat CMS 打破了「純檔案系統只能給開發者用」的刻板印象,提供了直覺的管理介面,支援文章管理、拖曳上傳,降低了使用門檻。

5. 黃金組合:IgG Flat CMS 為何選擇 Markdown、YAML 與 PHP?

看到這裡,你可能會想:「為什麼偏偏是這幾個技術?」

這其實是一個經過深思熟慮的選擇,目的是為了達成輕量高效優雅這三個目標。

  • Markdown(內容層):選擇 Markdown 作為內容載體,讓寫作回歸純粹。創作者可以在任何純文字編輯器中寫作,不受特定平台的限制。同時,IgG Flat CMS 可以直接利用開源、成熟且輕量的 Markdown 解析器,進一步控制了系統的總體積。
  • YAML(設定與描述層):YAML 作為設定檔,其高可讀性讓網站編輯與維護變得異常簡單。無論是修改網站標題、導覽列,或定義文章的元資料(Front Matter),直接用編輯器開啟修改即可,一目了然。
  • PHP(後端驅動核心):雖然前端採用 Vanilla JS,但後端的檔案讀取、解析與路由邏輯,則由精準的 PHP 程式碼負責。PHP 作為一種廣泛支援的後端語言,幾乎在所有主機上都可運行,無需特別的環境配置,這正是 IgG Flat CMS 能實現「零部署成本」的關鍵。

這三者相輔相成,形成一個完美的閉環:使用者用 Markdown 寫內容,用 YAML 定義設定,然後由 PHP 在背後默默地將這一切轉換為高效的網站。

結語:一套獻給「懂吃」的人的「精緻私房菜」

在這個追求大而全的時代,IgG Flat CMS 反其道而行,選擇了一條小而精的路線。它不僅是一套 CMS,更是一種開發哲學的體現——用最核心的技術,解決最本質的問題。正如 SoloMan 所說:「我自己覺得好用,就分享給世界。這套系統省下來的那 49MB 贅肉,沒有憑空消失,而是全部濃縮成了大腦裡的架構思維與邏輯血汗。歡迎懂吃的技術同好,一起來品嚐這道 1MB 的精緻私房菜。」

如果你厭倦了編輯器與設定的無盡折騰,或者想在茫茫網海中找一個真正屬於自己的、純粹的數位花園,不妨從認識這三種格式開始,親手感受一下純檔案 CMS 的魅力。它或許不是萬能,但對你心中那個「剛剛好」的網站來說,它可能比任何龐然大物都更適合。

如果想留言吐槽請👉聯絡我們
👉預約 20 分鐘免費 IT 架構健檢
我不會帶任何主機去你公司。我會帶:
一台筆電
一杯咖啡
一張紙
紙上畫的是你公司現在的真實 IT 架構。然後我會直接用紅筆圈出來告訴你:
👉 問題在哪、風險在哪、機會在哪。
不賣東西,只給對策。