
Grav เป็น CMS ที่ใช้แนวคิดต่างจาก WordPress หรือ Joomla อย่างชัดเจน เพราะมันไม่ใช้ฐานข้อมูลเลย แต่เก็บเนื้อหาเป็นไฟล์ Markdown ตรง ๆ บนเซิร์ฟเวอร์ บทความนี้อธิบายว่า "Flat-File CMS" ทำงานอย่างไร มีข้อดีข้อจำกัดอะไร และเหมาะกับงานแบบไหน
Grav และแนวคิด Flat-File CMS
Grav เปิดตัวในปี 2014 โดยทีม RocketTheme พัฒนาด้วย PHP แต่จุดที่ทำให้มันแตกต่างคือไม่ต้องใช้ MySQL หรือฐานข้อมูลใด ๆ เนื้อหาแต่ละหน้าเก็บเป็นไฟล์ Markdown ส่วนการตั้งค่าใช้ไฟล์ YAML และธีมสร้างด้วย Twig ทั้งเว็บจึงเป็นเพียง "โฟลเดอร์ของไฟล์ข้อความ" ที่อ่านและแก้ไขได้ตรง ๆ
เว็บที่ไม่มีฐานข้อมูลทำงานอย่างไร
CMS ทั่วไปอย่าง WordPress ต้องดึงเนื้อหาจากฐานข้อมูล MySQL ทุกครั้งที่มีคนเปิดหน้าเว็บ แต่ Grav อ่านไฟล์ Markdown จาก Filesystem โดยตรงแล้วแคชผลลัพธ์ไว้ ผลคือลดขั้นตอนการ query ฐานข้อมูลออกไป ทำให้หน้าเว็บที่เนื้อหาไม่ได้เปลี่ยนบ่อยตอบสนองได้เร็ว และการสำรองข้อมูลก็ง่าย เพียงคัดลอกโฟลเดอร์ทั้งหมด
ข้อได้เปรียบของการไม่พึ่ง Database
- ติดตั้งง่าย — แตกไฟล์ ZIP แล้วอัปโหลด ก็ใช้งานได้ ไม่ต้องสร้างฐานข้อมูล
- ย้ายเว็บสะดวก — ก๊อปปี้โฟลเดอร์ไปวางที่โฮสต์ใหม่ได้เลย
- ใช้ Git ได้เต็มที่ — ไฟล์ Markdown เหมาะกับ Version Control ดูประวัติการแก้ไขได้
- ลดช่องโหว่ฝั่งฐานข้อมูล — ไม่มี MySQL ก็ไม่มีความเสี่ยง SQL Injection ที่ฐานข้อมูล
เปรียบเทียบ Grav กับ CMS ยอดนิยมอื่น
การเลือก CMS ที่ถูกต้องขึ้นอยู่กับลักษณะงานและทักษะของทีม ตารางด้านล่างช่วยให้เห็นภาพรวมได้ชัดขึ้น
| CMS | ต้องใช้ฐานข้อมูล | เหมาะกับ | ปลั๊กอิน/ชุมชน |
|---|---|---|---|
| Grav | ไม่ต้อง | Portfolio, เอกสาร, Landing Page | เล็ก แต่มีคุณภาพ |
| WordPress | MySQL บังคับ | Blog, ร้านค้า, เว็บทั่วไป | ใหญ่มาก (60,000+ ปลั๊กอิน) |
| Joomla | MySQL บังคับ | เว็บองค์กร, portal ขนาดกลาง | กลาง |
| Hugo / Jekyll | ไม่ต้อง (Static Gen) | Blog นักพัฒนา, เว็บเอกสาร | เล็ก ต้องมีความรู้ CLI |
ข้อจำกัดที่ทำให้ Grav ไม่เหมาะกับทุกงาน
แนวทาง Flat-File มีข้อแลกเปลี่ยน ชุมชนของ Grav เล็กกว่า WordPress มาก ปลั๊กอินและธีมจึงมีให้เลือกน้อยกว่า ตัว Grav ไม่มีระบบตะกร้าสินค้าในตัวจึงไม่เหมาะกับร้านค้าออนไลน์ และเมื่อเนื้อหาเพิ่มขึ้นถึงระดับหลายพันถึงหลายหมื่นหน้า การอ่านไฟล์จาก Filesystem จะเริ่มช้ากว่าระบบที่ใช้ฐานข้อมูลที่มีดัชนี — Grav จึงเหมาะกับเว็บขนาดเล็กถึงกลางมากกว่า
ติดตั้ง Grav บนโฮสติ้งใน 3 ขั้นตอน
เพราะ Grav เป็นแอป PHP ที่ไม่ต้องใช้ฐานข้อมูล การติดตั้งบน Shared Hosting จึงง่ายมาก ขั้นแรกดาวน์โหลดแพ็กเกจ Grav (แนะนำรุ่นที่มี Admin plugin มาด้วย) ขั้นที่สองอัปโหลดและแตกไฟล์ ZIP ผ่าน File Manager ใน DirectAdmin ไปยังโฟลเดอร์ที่ต้องการ ขั้นสุดท้ายเปิด URL ของเว็บเพื่อตั้งบัญชีผู้ดูแล เพียงเท่านี้ก็เริ่มเขียนเนื้อหาได้
ความเข้ากันได้: Grav ต้องการเพียง PHP 8.x พร้อมส่วนขยายพื้นฐาน โฮสติ้งของ AsiaGB รองรับ PHP 8.2 / 8.3 บน SSD จึงรัน Grav ได้ทันทีโดยไม่ต้องตั้งค่าฐานข้อมูลใด ๆ
โครงสร้างไฟล์และการเขียนเนื้อหาใน Grav
ใน Grav ทุกหน้าเว็บคือโฟลเดอร์หนึ่งโฟลเดอร์ที่มีไฟล์ Markdown อยู่ข้างใน โครงสร้างโฟลเดอร์จะกำหนดลำดับชั้นของ URL โดยตรง ตัวอย่างเช่น โฟลเดอร์ user/pages/01.home/ จะตอบสนองกับ URL หน้าแรก และโฟลเดอร์ user/pages/02.about/ จะตอบสนองกับ /about
ไฟล์เนื้อหาในแต่ละโฟลเดอร์ชื่อ default.md หรือตั้งชื่อตาม template ที่ต้องการใช้ ส่วนหัวของไฟล์เป็น YAML Frontmatter สำหรับกำหนด title, description และการตั้งค่าอื่น ๆ ตามด้วยเนื้อหาที่เขียนด้วย Markdown ปกติ ตัวอย่างโครงสร้างพื้นฐาน:
---
title: หน้าเกี่ยวกับเรา
description: บริษัทของเรา
---
## เกี่ยวกับเรา
เนื้อหาของหน้านี้เขียนด้วย **Markdown** ปกติ
ข้อดีของแนวทางนี้คือสามารถใช้ Git ควบคุมเวอร์ชันของทุกหน้าได้ทันที การตรวจสอบประวัติการแก้ไขและการ rollback ทำได้ผ่าน git log และ git revert ซึ่งเป็นเครื่องมือที่นักพัฒนาคุ้นเคยดีอยู่แล้ว
ปลั๊กอินและธีมสำคัญใน Grav
แม้ชุมชน Grav จะเล็กกว่า WordPress แต่มีปลั๊กอินสำคัญที่ครอบคลุมความต้องการหลักครบถ้วน ปลั๊กอินทั้งหมดติดตั้งผ่าน Grav Package Manager (GPM) บน command line หรือผ่าน Admin Panel
- Admin Panel — หน้าจัดการเว็บผ่านเบราว์เซอร์ รวมถึงการเขียนเนื้อหา จัดการธีม และติดตั้งปลั๊กอิน แนะนำให้ติดตั้งตั้งแต่เริ่มต้น
- SEO — ปลั๊กอิน SEO ช่วยเพิ่ม meta tags, Open Graph และ structured data อัตโนมัติ
- Form — สร้างฟอร์มติดต่อและฟอร์มเก็บข้อมูลโดยกำหนดค่าผ่าน YAML ไม่ต้องเขียน PHP
- Sitemap — สร้าง sitemap.xml อัตโนมัติจากโครงสร้างโฟลเดอร์ ช่วยให้ Search Engine index ได้ครบ
- Error — จัดการหน้า 404 และ error page ได้อย่างสวยงามตามธีม
- Login — เพิ่มระบบสมาชิกและพื้นที่สมาชิก สามารถกำหนดสิทธิ์การเข้าถึงหน้าต่าง ๆ ได้
การดูแลรักษาและอัพเดต Grav
Grav มีระบบอัพเดตที่ง่ายกว่า CMS ที่ใช้ฐานข้อมูล เพราะไม่มี database migration ที่ต้องระวัง การอัพเดตทำได้ผ่าน Admin Panel โดยตรงหรือผ่าน GPM บน command line ด้วยคำสั่งเพียงบรรทัดเดียว
bin/gpm selfupgrade # อัพเดตตัว Grav เอง
bin/gpm update # อัพเดตปลั๊กอินและธีมทั้งหมด
เนื่องจากไฟล์ทั้งหมดเป็นข้อความธรรมดา การสำรองข้อมูลทำได้ง่ายมาก เพียงสำรองโฟลเดอร์ user/ ซึ่งเก็บเนื้อหา ธีม ปลั๊กอิน และการตั้งค่าทั้งหมดไว้รวมกัน ถ้าใช้ Git อยู่แล้วก็ยิ่งง่ายเข้าไปอีก เพราะทุกการเปลี่ยนแปลงถูก track อยู่แล้ว
งานแบบไหนที่ Grav ทำได้ดีที่สุด
Grav เปล่งประสิทธิภาพได้ดีกับเว็บ Portfolio, Landing Page, เว็บเอกสาร/คู่มือ (Documentation) และเว็บบริษัทขนาดเล็กที่เนื้อหาไม่เปลี่ยนบ่อย โดยเฉพาะทีมที่คุ้นเคยกับ Markdown และอยากดูแลเว็บผ่าน Git ส่วนงานที่ต้องการระบบสมาชิก ร้านค้า หรือเนื้อหาจำนวนมหาศาล ควรเลือก CMS ที่ออกแบบมาเพื่อสิ่งนั้นโดยตรง
คำถามที่พบบ่อย
Grav ทำเว็บขายของได้ไหม
ไม่เหมาะ Grav ไม่มีระบบตะกร้าสินค้าในตัว ถ้าต้องการขายของควรใช้ WooCommerce หรือ OpenCart
ไม่มีฐานข้อมูลแล้วเว็บช้าหรือเปล่า
สำหรับเว็บขนาดเล็กถึงกลาง Grav มักเร็วกว่าเพราะตัดขั้นตอน query ฐานข้อมูล แต่เว็บที่มีเนื้อหาหลายหมื่นหน้าระบบฐานข้อมูลจะได้เปรียบกว่า
ต้องใช้ความรู้เทคนิคมากไหม
ต้องคุ้นกับ Markdown และ YAML บ้าง แต่รุ่นที่มี Admin plugin มีหน้าจัดการผ่านเว็บให้ใช้งานสะดวกขึ้น
เริ่มใช้ Grav บนโฮสติ้งที่รองรับ PHP 8.x
Hosting เริ่ม 500 บาท/ปี · PHP 8.2/8.3 · SSD · ไม่ต้องตั้งค่าฐานข้อมูล
ดูแพ็กเกจ Hosting