Astro 7.0 เขียนเครื่องมือเบื้องหลังใหม่ด้วย Rust แล้ว build เร็วขึ้น 15–61%
Astro 7.0 เขียนเครื่องมือที่เคยเป็นคอขวดของ build ใหม่ทั้งชุดด้วย Rust ทั้ง compiler และตัวประมวลผล Markdown ผลคือ build เร็วขึ้น 15–61% ในการทดสอบของทีม Astro เอง บทความนี้อธิบายว่า 7.0 เปลี่ยนอะไร และถ้าใช้ Astro อยู่ ควรอัปเลยไหม

Astro 7.0 ออกแล้ว และคราวนี้ใจความหลักแทบทั้งเวอร์ชันคือความเร็วในการ build Astro คือเฟรมเวิร์กทำเว็บที่ทำงานแบบ "ส่ง HTML นิ่งๆ ออกไปก่อน แล้วค่อยโหลด JavaScript เฉพาะส่วนที่ต้องโต้ตอบจริงๆ" จุดขายของมันคือเว็บที่เบาและเร็วสำหรับผู้ใช้ปลายทาง แต่ฝั่งคนทำเว็บกลับเจอปัญหาตรงข้าม · เว็บที่มีหน้าเยอะต้องรอ build นานทุกครั้ง
เวอร์ชัน 7.0 แก้ตรงจุดนั้นโดยตรง · ทีม Astro ยกเครื่องมือเบื้องหลังที่เคยเป็นคอขวดของ build ไปเขียนใหม่ด้วย Rust ทั้งชุด ผลที่ทีมวัดได้คือ build time เร็วขึ้น 15–61% แล้วแต่ขนาดและลักษณะของเว็บ บางเว็บเร็วขึ้นเกินสองเท่า ตัวเลขนี้ไม่ได้มาจากฟีเจอร์เด่นใหม่สักตัว แต่มาจากการเปลี่ยนเครื่องมือแกนกลางที่ทำงานอยู่เบื้องหลัง
ทำไม build เคยช้า
เวลาเรากด build เว็บ Astro หนึ่งครั้ง เครื่องมือเบื้องหลังต้องทำงานต่อกันเป็นทอดๆ · อ่านไฟล์ .astro แต่ละไฟล์แล้วแปลงเป็น JavaScript · เอาไฟล์ Markdown ทุกหน้ามาแปลงเป็น HTML · แล้วรวมทุกอย่างออกมาเป็นชุดไฟล์ที่พร้อมเอาขึ้นเว็บ
ทุกขั้นนี้เดิมทำงานบนเครื่องมือที่เขียนด้วย JavaScript หรือภาษาที่ช้ากว่าเป็นหลัก พอเว็บมีไม่กี่หน้าก็ไม่รู้สึกอะไร แต่พอเว็บโตขึ้นเป็นหลักพันหน้า · เอกสารคู่มือ บล็อกที่สะสมมาหลายปี หน้าสินค้าจำนวนมาก · งานแต่ละขั้นก็ทบกันจนการรอ build กลายเป็นเวลาที่เสียไปจริงๆ ในแต่ละวัน ยิ่งเว็บใหญ่ ยิ่งช้า
Rust เข้ามาแทนที่ตรงไหนบ้าง

หัวใจของ 7.0 คือการย้ายขั้นตอนที่หนักที่สุดสามจุดไปเขียนด้วย Rust · ภาษาที่เหมาะกับงานระดับล่างและทำงานได้เร็วมากกับงานประเภทนี้
จุดแรกคือ compiler ของไฟล์ .astro · ตัวที่แปลง component ของเราเป็นโค้ดที่รันได้ ของเดิมเขียนด้วยภาษา Go ของใหม่เขียนใหม่หมดด้วย Rust
จุดที่สองคือ ตัวประมวลผล Markdown และ MDX · เดิม Astro ต่อเครื่องมือหลายตัวเข้าด้วยกันเพื่อแปลง Markdown เป็น HTML เวอร์ชันนี้เปลี่ยนมาใช้ตัวใหม่ชื่อ Sätteri ซึ่งเป็นตัวประมวลผล Markdown ที่เขียนด้วย Rust โดย Erika สมาชิกทีมหลักของ Astro · สิ่งที่เคยต้องลงปลั๊กอินแยกหลายตัว เช่น ตาราง เชิงอรรถ รายการ checklist สมการคณิตศาสตร์ ตอนนี้ติดมาในตัวเลย
จุดที่สามคือเครื่องมือสำหรับ bundle ไฟล์ · Astro 7.0 ขยับไปใช้ Vite 8 ซึ่งมาพร้อม bundler ตัวใหม่ชื่อ Rolldown ที่เขียนด้วย Rust เช่นกัน และเข้ามาแทนเครื่องมือเดิมสองตัวรวด จาก benchmark ของทีมพัฒนา Rolldown เร็วกว่าของเดิม 10–30 เท่า
ตัวเลขมาจากการวัดจริง
ทีม Astro ทดสอบบนเครื่อง MacBook Pro ชิป Apple M4 Pro แรม 48 GB กับเว็บจริงหลายขนาด ตั้งแต่เว็บ astro.build เองที่มีราว 308 หน้า ไปจนถึงเว็บเอกสารขนาด 8,431 หน้าและ 13,275 หน้า
ผลที่น่าสนใจคือยิ่งเว็บใหญ่ ยิ่งเห็นผลชัดในส่วนที่เคยช้า · เฉพาะตัวประมวลผล Markdown ตัวใหม่ ตัดเวลา build ของเว็บเอกสาร Astro และ Cloudflare ลงได้เกินหนึ่งนาทีต่อครั้ง สำหรับคนที่ build วันละหลายรอบ เวลาที่ลดลงต่อครั้งคือเวลาที่ได้คืนมาเป็นกอบเป็นกำ
เรื่องใหม่อีกชุดที่มาพร้อมกัน
นอกจากความเร็ว 7.0 ยังทำให้ฟีเจอร์ที่เคยเป็นของทดลองในเวอร์ชันก่อนกลายเป็นค่ามาตรฐานที่ใช้ได้จริงแล้ว เลือกอ่านเฉพาะตัวที่ตรงกับงานของเราพอ
- Queued Rendering — สำหรับหน้าที่มีตรรกะซับซ้อนหนาแน่น · วิธี render แบบใหม่นี้เร็วกว่าของเดิมราว 2.4 เท่า และตอนนี้เปิดใช้เป็นค่ามาตรฐานแล้ว ไม่ต้องตั้งค่าอะไร
- Advanced Routing และ Route Caching — สำหรับคนทำเว็บที่ต้องคุมเส้นทาง URL เองหรืออยากแคชหน้าไว้ · ทั้งคู่พ้นสถานะทดลองและใช้งานจริงได้แล้ว
- รองรับ AI agent — สำหรับคนที่ให้ AI ช่วยเขียนโค้ด · Astro detect ได้เองว่ามี AI agent สั่งงานอยู่ แล้วเปิดโหมด background ให้อัตโนมัติ พร้อมจุดให้ agent เช็กได้ว่า server พร้อมหรือยัง
ถ้างานเราเป็นบล็อกหรือหน้า landing ธรรมดา สามตัวนี้แทบไม่ต้องแตะ · ของที่เราได้แน่ๆ คือ build ที่เร็วขึ้นโดยไม่ต้องทำอะไรเพิ่ม
ควรอัปเลยไหม แล้วต้องระวังอะไร

ถ้าใช้ Astro อยู่แล้ว อัปได้ด้วยคำสั่งเดียว · รัน @astrojs/upgrade แล้วคำสั่งนี้จะอัปเดตให้อัตโนมัติ จากนั้นเปิด คู่มืออัปเกรดเป็น Astro v7 อ่านรายการสิ่งที่เปลี่ยนควบคู่ไปด้วย เพราะ 7.0 เป็นเวอร์ชันใหญ่ จึงมีจุดที่อาจพังถ้าไม่เช็กก่อน
จุดที่ต้องดูเป็นพิเศษมีไม่กี่อย่าง · compiler ตัวใหม่ที่เขียนด้วย Rust เข้มงวดขึ้น · ของเดิมเจอ HTML ที่ปิด tag ไม่ครบหรือซ้อนกันผิดแล้วแอบแก้ให้ ของใหม่จะ error ทันที ฉะนั้นถ้า build แล้วขึ้น error ที่ไม่เคยเจอ มักเป็น HTML ที่เขียนละหลวมไว้แต่แรก
อีกจุดสำหรับคนที่เคยลงปลั๊กอิน Markdown เพิ่มเอง · ถ้าไม่เคยลงปลั๊กอิน remark หรือ rehype ก็ไม่ต้องทำอะไร build ต่อได้เลย แต่ถ้าพึ่งพาปลั๊กอินพวกนี้อยู่ ต้องลงแพ็กเกจตัวประมวลผล Markdown เดิมแยกต่างหาก หรือย้ายปลั๊กอินไปเขียนใหม่ในรูปแบบ Sätteri
โดยรวมแล้ว ความเสี่ยงของการอัปต่ำสำหรับเว็บทั่วไป · ยิ่งเว็บเป็นเนื้อหาล้วนอย่างบล็อกหรือเอกสาร ยิ่งคุ้มเพราะส่วนที่เร็วขึ้นชัดที่สุดคือการแปลง Markdown และการ bundle ไฟล์ ซึ่งเป็นงานหลักของเว็บแบบนั้นพอดี
เร็วขึ้นเพราะเปลี่ยนเครื่องมือเบื้องหลัง ไม่ใช่เพิ่มลูกเล่น
สิ่งที่ Astro 7.0 บอกกับวงการคือ ความเร็วที่เพิ่มขึ้นจริงรอบนี้ไม่ได้มาจากการเติมฟีเจอร์หวือหวา แต่มาจากการกลับไปเขียนเครื่องมือพื้นฐานที่ใช้กันทุกวันใหม่ · เวลาที่เครื่องมือสายเว็บทยอยย้ายงานหนักไปใช้ Rust สิ่งที่คนทำเว็บได้กลับมาไม่ใช่ของเล่นใหม่ แต่เป็นเวลาที่เคยเสียไปกับการนั่งรอ build
ที่มา: · บทความ Astro 7.0 จาก Astro · คู่มือ Upgrade to Astro v7 จาก Astro Docs



