Hugo-省成本與高安全性取代php試想
最近開始學習 PHP,雖然它是一個相對古老的語言,但由於 SEO 和需要從資料庫中抓取內容,PHP 在這方面還是相對容易上手。
然而,之後我使用了 Cursor AI,發現有一個比 PHP 更容易入手的解決方案。這個方案可以結合我們公司現有產品線的技術:Angular、Node.js(Express.js)、MySQL,以及一個特別的工具——Hugo。
Hugo 通常用來生成高效能、精簡的靜態網頁。那麼,靜態網頁如何抓取資料庫的資料呢?其實可以透過 GitHub Actions 等自動化工具來實現。
從安全性角度來看,靜態網頁比 PHP 更高,且成本也更低。它可以部署在 Firebase Hosting 上,若流量不大,幾乎無需額外費用。
例如,我們可以構建一個知識庫,每天更新一次。可以在固定時間自動刷新 Hugo 的網頁內容,或者讓用戶手動更新。如果預算足夠,甚至可以每次資料庫更新時自動觸發 Action,重新生成網頁。
前端的 Angular 可以用來管理後台,Node.js 負責將資料寫入資料庫。資料寫入後,有兩種選擇:一是讓 Hugo 直接抓取 JSON,二是使用 Express.js 生成 Markdown(這需要有一台暫存的虛擬機來存放生成的檔案)。如果想進一步節省成本,可以使用 Google Cloud Run,雖然這樣會讓暫存空間管理更加麻煩。
接著,Action 會讓 Hugo 生成新的靜態網頁檔,並將新版本部署到 Firebase。
這種架構有其優缺點。優點是 Hugo 生成的靜態網頁檔案幾乎沒有太多後端程式碼,因此相對難以遭受攻擊;缺點則是,如果知識庫每天更新大量內容(如 1000 次),就需要重新生成 1000 次檔案。不過,這可以透過一台最低規格的 Linux 虛擬機器來運行排程作業,每天批次更新兩到四次來解決。
對於企業知識庫來說,實時更新並非絕對必要,客戶可以看到定時更新的內容。如果有需求,也可以設置一個按鈕,讓用戶手動刷新頁面。這樣就可以省下 PHP 的開發成本,並簡化產品線。