Drupal 11.2.0 ซึ่งเป็นรุ่นอัปเดตคุณสมบัติลำดับที่สองของ Drupal 11 ได้เปิดตัวอย่างเป็นทางการแล้ว โดยปรับปรุงประสิทธิภาพและความสามารถ ทั้งในส่วนหลังบ้าน (backend) และส่วนหน้าบ้าน (frontend) อย่างเห็นได้ชัด
ความเร็วที่เพิ่มขึ้นอย่างก้าวกระโดด
หนึ่งในการพัฒนาที่โดดเด่นที่สุดคือ ความเร็วในการติดตั้งส่วนขยายและตัว Drupal เองที่เร็วขึ้น 3-4 เท่า เมื่อเทียบกับ Drupal 11.1.0 การปรับปรุงนี้เป็นผลมาจากการเพิ่มประสิทธิภาพต่างๆ ในการสร้างคอนเทนเนอร์และการทำงานของตัวติดตั้ง ทำให้การติดตั้ง Drupal หรือส่วนขยายต่างๆ ทำได้อย่างรวดเร็ว ไม่ว่าจะผ่าน User Interface หรือ Drush โดยมีการสาธิตที่แสดงให้เห็นว่า Drupal 11.2 สามารถติดตั้ง 60 โมดูลได้ในเวลาเพียง 5.7 วินาที ซึ่งเร็วกว่า Drupal 11.1 ถึงสี่เท่า

การพัฒนาสำหรับนักพัฒนาที่สำคัญ
ไม่จำเป็นต้องมีไฟล์ .module อีกต่อไป!:
ตั้งแต่ Drupal 11.2 เป็นต้นไป API สุดท้ายที่ยังคงต้องพึ่งพาไฟล์ .module ก็สามารถนำมาใช้เป็น hooks ในรูปแบบ Object-Oriented ได้อย่างสมบูรณ์ นักพัฒนาสามารถใช้ #[RemoveHook] attributes เพื่อลบ hooks, #[ReOrderHook] เพื่อเปลี่ยนลำดับ hook และ #[Hook('preprocess')] attributes เพื่อประกาศ Object-Oriented preprocess hooks ได้ ซึ่งหมายความว่าไม่จำเป็นต้องมีไฟล์ .module เลยหาก hooks ทั้งหมดถูกประกาศในคลาสที่อยู่ใน Hook namespace
การสร้าง JSON Schema ในตัวสำหรับ Content Entities:
เพื่อประสบการณ์การพัฒนาที่ดียิ่งขึ้นเมื่อทำงานกับ Drupal entities ผ่าน API ตอนนี้ Drupal core สามารถสร้าง JSON Schemas สำหรับประเภท Content Entity ได้โดยตรง API ที่เกี่ยวข้องกับ typed data, serialization และ field ได้รับการปรับปรุงเพื่อให้สามารถสร้าง schemas ระดับฟิลด์ได้ตามการกำหนดค่าการจัดเก็บ ข้อมูลนี้สำคัญอย่างยิ่งสำหรับ client applications ที่ต้องการทราบว่าค่าและรูปแบบที่ยอมรับสำหรับฟิลด์ต่างๆ เป็นอย่างไร ฟิลด์ประเภทหลักทั้งหมดที่มาพร้อมกับ core ตอนนี้มี JSON Schemas ให้ใช้งานได้ทันที รวมถึงปลั๊กอิน typed data ใน core ส่วนใหญ่ ซึ่งหมายความว่าฟิลด์หลักทั้งหมดสามารถสร้าง JSON Schemas สำหรับคุณสมบัติของตนเองได้ตั้งแต่เริ่มต้น
การรองรับ Variant แบบ Native ใน Single-Directory Components (SDC):
ในระบบ Design System, variant ช่วยให้สามารถจัดกลุ่มคุณสมบัติของคอมโพเนนต์หลายรายการเข้าเป็นชุดที่กำหนดไว้ล่วงหน้าได้ ซึ่งสามารถใช้เป็นทางลัดในการเรนเดอร์คอมโพเนนต์ ก่อนหน้านี้นักพัฒนาส่วนหน้าสามารถกำหนด variant เป็น prop ได้ แต่แนวทางนี้ไม่รองรับชื่อหรือคำอธิบายที่กำหนดเองเพื่อสื่อถึงวัตถุประสงค์ของ variant ตอนนี้คุณสามารถใช้ variants เป็นคุณสมบัติที่ root ของการประกาศคอมโพเนนต์ของคุณได้แล้ว ทำให้มีความยืดหยุ่นและชัดเจนยิ่งขึ้นในการจัดการคอมโพเนนต์
ประสิทธิภาพและการแสดงผลที่เหนือกว่า
การรองรับไฟล์ AVIF และสามารถแปลงกลับมาเป็น WebP:
Drupal 11.2 ได้เพิ่มการรองรับไฟล์ AVIF ในชุดเครื่องมือจัดการไฟล์รูปภาพ AVIF ที่มีคุณภาพการบีบอัดและคุณภาพของภาพที่ดีกว่า WebP โดยเฉพาะอย่างยิ่งสำหรับภาพความละเอียดสูงและเนื้อหา HDR อย่างไรก็ตาม เนื่องจากเซิร์ฟเวอร์บางแห่งอาจไม่รองรับการแปลงเป็น AVIF จึงมีการเพิ่มกลไกแปลงกลับมาเป็น WebP เมื่อไม่สามารถใช้งานไฟล์รูปภาพ AVIF ได้
การปรับปรุง Page Weight ของ CSS:
Drupal core ได้รับการปรับปรุงให้ลดขนาด CSS เริ่มต้นที่เพิ่มในทุกหน้าจากประมาณ 7 KB เหลือเพียง 1 KB สิ่งนี้จะช่วยปรับปรุงความต้องการแบนด์วิดท์และเวลาในการเรนเดอร์หน้าสำหรับเว็บไซต์ส่วนใหญ่ที่ไม่ได้รับการปรับแต่งอย่างสูงบน Drupal 11.2
ประสบการณ์ผู้ใช้และการจัดการเว็บไซต์ที่ดีขึ้น
การปรับปรุงการนำทาง (Navigation):
โมดูล Navigation ที่ทันสมัยตอนนี้เปิดใช้งานฟังก์ชันแถบด้านบน (top bar) ที่มาพร้อมในตัวโดยอัตโนมัติ นอกจากนี้ ลิงก์ "overview" ยังแสดงขึ้นเมื่อรายการเมนูเป็นคอนเทนเนอร์สำหรับรายการย่อย ทำให้ค้นหาหน้าต่างๆ ได้ง่ายขึ้น ปัญหาอื่นๆ อีกมากมายได้รับการแก้ไขแล้ว ทำให้โมดูลทดลองนี้ใกล้จะกลายเป็นโมดูลที่เสถียรในรุ่นย่อยถัดไป
การแตก Recipe Dependencies:
Drupal recipes เป็นแพ็กเกจ Composer พิเศษที่ออกแบบมาเพื่อ Bootstrap โปรเจกต์ Drupal ด้วย Dependency ที่จำเป็น เมื่อต้องการ recipe ปลั๊กอิน Composer ใหม่จะ "แตก" มันโดยย้าย Dependency ของ recipe ไปยัง composer.json ใน root ของโปรเจกต์โดยตรง และลบ recipe ออกจากการเป็น Dependency ของโปรเจกต์ ซึ่งทำให้สามารถอัปเดต Dependency เหล่านั้นในภายหลังได้ และ recipe จะไม่เป็น Dependency ที่ใช้งานอยู่ของเว็บไซต์อีกต่อไป
การเปลี่ยนแปลงในโมดูล Update Status เพื่อรองรับ Modern Workflows:
โมดูล Update Status ตอนนี้ตรวจสอบสถานะของส่วนขยายที่ยังไม่ได้ติดตั้ง ทำให้เว็บไซต์ของคุณปลอดภัยยิ่งขึ้น การอัปเดตธีมและโมดูลในโมดูล Update Status ด้วย authorize.php ไม่ได้รองรับ Composer ซึ่งอาจก่อให้เกิดปัญหาร้ายแรงต่างๆ สำหรับเว็บไซต์และเวิร์กโฟลว์การปรับใช้
ดังนั้น คุณสมบัติเดิมนี้จึงถูกลบออกไป โดยทั่วไปแล้ว โปรเจกต์ควรได้รับการอัปเดตผ่าน Command Line ด้วย Composer และในอนาคต Update Manager (Automatic Updates) แบบทดลองก็จะถูกนำมาใช้เพื่อจุดประสงค์นี้เช่นกัน
การปรับปรุงประสิทธิภาพ Cache:
มีการปรับปรุงประสิทธิภาพของ Render Cache ของ Drupal อย่างมีนัยสำคัญ เนื่องจากการเพิ่มประสิทธิภาพในการประมวลผล Placeholder และการตรวจสอบการทำให้ Cache Tag ไม่ถูกต้อง ซึ่งส่งผลให้มีรายการ Cache ที่มีขนาดเล็กลงและมี Dependency ของ Cache น้อยลงใน Dynamic Page Cache นำไปสู่อัตราการ Cache Hit ที่สูงขึ้นและลดความต้องการพื้นที่จัดเก็บ Cache การลดจำนวนการค้นหา Cache Tag ยังช่วยลดรอบการเดินทางไปยัง Persistent Cache Storage Backends ในทุกการตอบสนอง HTML ซึ่งใช้ได้ไม่ว่า Backend ของ Cache Tag จะใช้ Database, Memcache หรือ Redis และนำไปสู่ประสิทธิภาพการแสดงผลหน้าเว็บที่เร็วขึ้นเล็กน้อยทั้งในกรณีที่ Cache Hit และ Cache Miss นอกจากนี้ยังมีการลดจำนวน Queries Per Second (QPS) อย่างมีนัยสำคัญสำหรับเว็บไซต์ที่มีการเข้าชมสูง ซึ่งควรช่วยให้เซิร์ฟเวอร์ Cache สามารถจัดการการเข้าชมได้มากขึ้นโดยใช้ฮาร์ดแวร์น้อยลง
การรองรับ PHPUnit 11
ตอนนี้สามารถใช้ PHPUnit 11 สำหรับการทดสอบได้แล้ว แม้ว่าเวอร์ชันเริ่มต้นยังคงเป็น PHPUnit 10 แต่ก็สามารถอัปเดตเป็น PHPUnit 11 ได้ด้วยคำสั่ง composer update phpunit/phpunit --with-dependencies การทดสอบ Drupal core บน PHP 8.4 ต้องใช้ PHPUnit 11 เป็นอย่างน้อย
- Log in to post comments