ระบบค้นหาสำหรับ Static Site ใน Astro

เมื่อเดือนที่แล้ว ผมได้เพิ่มระบบค้นหาให้กับเว็บไซต์สารบัญ AI จำนวน 3 แห่ง

ผมได้เปรียบเทียบตัวเลือกหลัก 4 อย่างก่อนที่จะตัดสินใจเลือก Pagefind และนี่คือเหตุผลที่ผมเลือกมัน

ตัวเลือกที่น่าสนใจ

• Pagefind: ไลบรารีที่พัฒนาด้วย Rust ทำงานในช่วง build time และให้บริการทุกอย่างในรูปแบบไฟล์ static • Algolia DocSearch: บริการแบบ hosted มีความรวดเร็วและใช้งานได้อย่างราบรื่น แต่มีค่าใช้จ่ายสำหรับเว็บไซต์เชิงพาณิชย์ • Lunr.js: ไลบรารีฝั่ง client ทำงานแบบออฟไลน์ได้ แต่จะทำให้การโหลดหน้าเว็บครั้งแรกหนักขึ้น • FlexSearch: ทางเลือกที่เร็วกว่า Lunr แต่ยังคงต้องส่ง index ทั้งหมดไปยังเบราว์เซอร์

ทำไมผมถึงเลือก Pagefind

  1. ขนาดของ Index เว็บไซต์ของผมมีข้อมูล 1,000 รายการ หากใช้ index ของ Lunr จะต้องเพิ่มขนาดถึง 4MB ในการโหลดหน้าเว็บทุกครั้ง แต่ Pagefind ใช้ระบบ shards ซึ่งจะโหลดข้อมูลเป็นส่วนเล็กๆ ตามที่ผู้ใช้พิมพ์ ทำให้การโหลดครั้งแรกมีขนาดไม่ถึง 30KB

  2. ค่าใช้จ่าย Algolia มีค่าใช้จ่าย $49 ต่อเดือนสำหรับเว็บไซต์เชิงพาณิชย์ ในขณะที่งบประมาณรวมสำหรับทั้ง 3 เว็บไซต์ของผมคือ $25 ต่อเดือน ส่วน Pagefind นั้นใช้งานได้ฟรี

  3. การ Deployment Pagefind สร้างไฟล์ static ซึ่ง Cloudflare Pages จะทำการ cache ไฟล์เหล่านี้ไว้ที่ edge โดยอัตโนมัติ คุณจึงไม่จำเป็นต้องจัดการ API keys หรือกังวลเรื่อง rate limits

ข้อแลกเปลี่ยน

Pagefind ไม่ได้สมบูรณ์แบบเสียทีเดียว คุณควรทราบถึงข้อจำกัด 2 ประการนี้:

• ไม่มี Query Logging: เนื่องจาก Pagefind ทำงานบนเบราว์เซอร์ มันจึงไม่สามารถบอกได้ว่าผู้ใช้ค้นหาอะไร ซึ่ง Algolia จะทำส่วนนี้ให้โดยอัตโนมัติ หากใช้ Pagefind คุณต้องสร้างระบบ logging ขึ้นมาเอง • การรองรับคำผิด (Typo Tolerance) ขั้นพื้นฐาน: Pagefind ใช้การทำ stemming แบบพื้นฐาน จึงอาจมีปัญหาเมื่อมีการพิมพ์ผิดมากๆ ในขณะที่ Algolia จัดการเรื่องคำผิดได้ดีกว่ามาก

สรุปการเปรียบเทียบ

• Pagefind: ฟรี, ใช้ไฟล์ static, รองรับการขยายตัวได้ดีด้วย lazy loading, รองรับคำผิดขั้นพื้นฐาน • Algolia: $49/เดือน, ใช้โครงสร้างพื้นฐานแบบ cloud, รองรับการขยายตัวได้ดี, รองรับคำผิดได้ดีเยี่ยม • Lunr.js: ฟรี, ส่ง index ไปพร้อมกับหน้าเว็บ, รองรับการขยายตัวได้ไม่ดี, รองรับคำผิดได้น้อย

บทสรุปของผม

หากคุณรัน Static Site ด้วยงบประมาณจำกัดและมีข้อมูลประมาณ 500 ถึง 1,000 รายการ ให้ใช้ Pagefind แต่ถ้าคุณต้องการการวิเคราะห์ข้อมูลขั้นสูงและการรองรับคำผิดที่สมบูรณ์แบบ การจ่ายเงินให้ Algolia คือคำตอบ

แหล่งที่มา: https://dev.to/morinaga/static-site-search-for-astro-in-2026-why-i-picked-pagefind-over-algolia-and-lunr-3891