Grav CMS คืออะไร Flat-File CMS ไม่ต้องใช้ Database

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

เปรียบเทียบ 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

การดูแลรักษาและอัพเดต 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