ปลั๊กอิน Jekyll ตัวใหม่ชื่อ jekyll-skyhook ได้จุดประกายการถกเถียงในชุมชนนักพัฒนาเว็บเกี่ยวกับความสมดุลระหว่างการเพิ่มประสิทธิภาพและความเรียบง่ายในการสร้างเว็บไซต์แบบ static ปลั๊กอินนี้สัญญาว่าจะแก้ปัญหาประสิทธิภาพทั่วไปผ่านการแปลงรูปภาพ การสร้างรูปภาพแบบ responsive และ cache busting แต่ได้ทำให้เกิดคำถามว่าความซับซ้อนเช่นนี้จำเป็นหรือไม่
คุณสมบัติของปลั๊กอิน jekyll-skyhook :
- การแปลงภาพ (ปรับขนาด, แปลงรูปแบบเป็น WebP/AVIF)
- ภาพแบบ responsive พร้อมการสร้าง
<source>
อัตโนมัติ - การป้องกันแคชด้วย digest และ URL แบบ fingerprint-based
- การเขียน CSS url() ใหม่เพื่ออัปเดตพาธของ asset อัตโนมัติ
- ตัวจัดการไฟล์สำหรับการพัฒนาที่สร้างใหม่อัตโนมัติ
- การแคชแบบสุ่มเพื่อหลีกเลี่ยงการประมวลผลซ้ำ
ชุมชนตั้งคำถามเกี่ยวกับความจำเป็นของปลั๊กอิน
การเปิดตัวครั้งนี้ได้กระตุ้นให้นักพัฒนาตั้งคำถามว่าการสร้างเครื่องมือใหม่เป็นแนวทางที่ดีที่สุดเสมอไปหรือไม่ สมาชิกบางคนในชุมชนชี้ให้เห็นว่าโซลูชันที่มีอยู่แล้วอย่าง jekyll_picture_tag gem ได้ทำงานอย่างน่าเชื่อถือมาหลายปีแล้ว ซึ่งแสดงให้เห็นว่าการประดิษฐ์ล้อใหม่อาจไม่จำเป็นเสมอไป สิ่งนี้เน้นให้เห็นถึงปัญหาทั่วไปในการพัฒนาเว็บ: เมื่อไหร่ควรสร้างเครื่องมือใหม่เทียบกับการใช้ประโยชน์จากโซลูชันที่มีอยู่และพิสูจน์แล้ว
แนวทางทางเลือกได้รับความสนใจ
การถกเถียงนี้ยังได้นำความสนใจไปสู่เครื่องมือ post-processing ในฐานะทางเลือกแทนการเพิ่มประสิทธิภาพแบบซับซ้อนในเวลา build เครื่องมืออย่าง Jampack ถูกเน้นย้ำว่าเป็นโซลูชันที่เรียบง่ายกว่าที่สามารถบรรลุการเพิ่มประสิทธิภาพอย่างมีนัยสำคัญโดยไม่เพิ่มความซับซ้อนให้กับกระบวนการ build ของ Jekyll นักพัฒนาคนหนึ่งรายงานว่าสามารถลดขนาดได้ 59% ในเว็บไซต์บริษัทของพวกเขาโดยใช้แนวทาง post-processing เช่นนี้ ซึ่งแสดงให้เห็นว่าการปรับปรุงประสิทธิภาพไม่จำเป็นต้องใช้ปลั๊กอินที่กำหนดเองแบบซับซ้อนเสมอไป
เครื่องมือทางเลือกที่กล่าวถึง:
- jekyll_picture_tag gem: ปลั๊กอิน Jekyll ที่มีชื่อเสียงสำหรับภาพแบบ responsive
- Jampack: เครื่องมือปรับปรุงประสิทธิภาพหลังการประมวลผลที่สามารถลดขนาดได้ 59%
- PostCSS: เครื่องมือประมวลผล CSS ที่ใช้ในขั้นตอนการ build
- Terser: เครื่องมือย่อขนาด JavaScript
- esbuild: เครื่องมือรวมและย่อขนาด JavaScript ที่รวดเร็ว
ปัญหาการใช้งานจริงปรากฏขึ้น
แม้ว่าปลั๊กอินจะสัญญาเรื่องประสิทธิภาพ แต่การทดสอบในโลกจริงได้เผยให้เห็นปัญหาการใช้งาน ผู้ใช้ได้สังเกตเห็นปัญหา Flash of Unstyled Content (FOUC) ในเว็บไซต์ที่ใช้ปลั๊กอินนี้ ซึ่งหน้าเว็บจะโหลดโดยไม่มีการจัดรูปแบบ CSS ในตอนแรก ก่อนที่จะใช้สไตล์หลังจากหน่วงเวลาสั้นๆ สิ่งนี้เกิดขึ้นเนื่องจาก CSS ถูกโหลดด้วย media=print แล้วจึงเปลี่ยนเป็น media=all ผ่าน JavaScript ซึ่งเป็นเทคนิคที่อาจส่งผลเสียได้เมื่อ critical CSS ไม่ได้ถูก inline อย่างเหมาะสม
การถกเถียงเรื่องความเรียบง่ายกับฟีเจอร์ที่หลากหลาย
การสนทนาที่กว้างขึ้นได้พัฒนาเป็นการถกเถียงเชิงปรัชญาเกี่ยวกับจุดประสงค์หลักของ Jekyll นักพัฒนาบางคนโต้แย้งว่าจุดดึงดูดหลักของ Jekyll อยู่ที่ความเรียบง่ายและความเป็นอิสระจาก JavaScript toolchain ที่ซับซ้อน พวกเขากังวลว่าการเพิ่มชั้นของความซับซ้อนจะทำลายจุดประสงค์ของการใช้ static site generator ที่ตรงไปตรงมา ในขณะที่คนอื่นๆ สนับสนุนโซลูชันที่มีฟีเจอร์หลากหลายที่สามารถแข่งขันกับเครื่องมือ build สมัยใหม่ได้ แม้ว่าจะหมายถึงความซับซ้อนที่เพิ่มขึ้นก็ตาม
การถกเถียงนี้สะท้อนให้เห็นถึงความตึงเครียดที่กว้างขึ้นในการพัฒนาเว็บระหว่างการรักษาเครื่องมือให้เรียบง่ายและการเพิ่มฟีเจอร์เพื่อตอบสนองความต้องการด้านประสิทธิภาพที่เปลี่ยนแปลงไป ในขณะที่การเพิ่มประสิทธิภาพยังคงมีความสำคัญสำหรับเว็บไซต์สมัยใหม่ ชุมชนยังคงถกเถียงกันว่าความซับซ้อนที่เพิ่มขึ้นนั้นคุ้มค่ากับผลประโยชน์ที่อาจได้รับหรือไม่ โดยเฉพาะเมื่อทางเลือกที่เรียบง่ายกว่าอาจบรรลุผลลัพธ์ที่คล้ายคลึงกันได้
อ้างอิง: How I fixed my blog's performance issues by writing a new jekyll plugin: jekyll-skyhook