มาลอง Optimize Web Performanceให้เร็วขึ้นกันเถอะ🚀⚡️
Optimize ให้เร็วขึ้น มันต้องทำไงนะ
วันนี้จะมาลองเล่าเรื่องการ optimize web ของเราให้หน้าเร็วยิ่งขึ้น จากประสบการณ์ของเราเอง อยากลองมาแชร์ให้ทุกคนได้ลองอ่านดู เผื่อจะได้ไอเดียอะไรดี ๆ กลับไป สืบเนื่องมากจากหนึ่งเดือนที่ผ่านมาได้รับมอบหมายให้ทำเว็บของบริษัท ซึ่งเราก็เดฟไปปกติของเรา แต่อยู่มาวันหนึ่ง พี่ CTO ของเราได้เดินมาบอกว่า
test web performance หรือยัง
พร้อมกับการกด test ให้เราดู และเราผู้กำลังทำหน้างง ๆ พร้อมกับการรอดูผลการทดสอบประสิทธิภาพของเว็บก็ได้พบว่า เว็บบริษัทมีคะแนนอยู่ที่ 34
พี่ CTO ผู้สุดแสนจะใจดีของบ.เราก็ได้หันมาบอกว่า
อาย พี่ขอ 80 นะ
ตัดภาพมาที่เราผู้ที่กำลังรับฟัง พร้อมกับเสียงที่ดังขึ้นในหัวของเรา ฉิบหายละ ทำไงนะ
และจุดเริ่มต้น optimize web performance ของเราการได้เริ่มต้นขึ้น…
โดยขั้นแรกของการเริ่มต้น optimize web ของเราให้เร็วขึ้นนั้นเราต้องทดสอบก่อนว่าเร็วของเรานั้นมีคะแนนของ performance อยู่เท่าไหร่ ซึ่งเครื่องมือในการทดสอบ มีดังนี้
- Google Lighthouse
- PageSpeed Insights
Google Lighthouse
Google Lighthouse เป็นเครื่องมือที่ใช้ทดสอบประสิทธิภาพของเว็บไซต์ ที่สามารถใช้งานได้เพียงแค่เรามี Google Chrome บน Desktop และเปิดใช้งาน DevTools โดยเลือกที่ Menu Audit ซึ่ง lighthouse นี้จะทดสอบทั้งหมด 5 เรื่อง คือ
- Performance — จะทดสอบความเร็วของเว็บไซต์เรา
- Progressive Web App —ดูว่าเว็บได้พัฒนาให้รองรับอุปกรณ์พวกมือถืออย่างสมบูรณ์แบบไหม
- Best practives — ทดสอบว่าเว็บเราได้พัฒนาในโดยใช้แนวทางปฏิบัติที่ถูกต้องที่สุดและดีที่สุดหรือเปล่า
- Accessibility — ทดสอบว่าทำเว็บไซต์สามารถทำให้ผู้ใช้งานทุกประเภทสามารถเข้าถึงได้โดยไม่มีอุปสรรคใด ๆ
- SEO — ทดสอบว่าเว็บเราสามารถทำให้เครื่องมือที่ใช้ในการค้นหา ค้นเจอหรือไม่
อ่านเพิ่มเติม ที่นี่
PageSpeed Insights
PageSpeed Insights ก็เป็นอีกเครื่องมือที่ใช้ในการทดสอบแค่เรื่องเดียว คือ ความเร็วของเว็บ
หลังจากเรารู้จักเครื่องมือกันแล้ว เราจะมาเริ่มทำการ optimize เว็บกันซึ่งจะโฟกัสไปที่เรื่องความเร็วของเว็บไซต์เท่านั้น เพราะจุดมุ่งหมายของเราครั้งนี้คือเว็บต้องเร็วขึ้นกว่านี้ performance score ต้อง 80++
ขั้นแรกทำการทดสอบ
ทดสอบเว็บเราด้วย Google Lighthouse
ขั้นตอนต่อมาทำความเข้าใจตัวชี้วัด
มาดูกันว่าตัวชี้วัดแต่ละตัวที่นำมาคิดคะแนนมีอะไรบ้าง
- First Contentful Paint คือ การแสดงผลที่มีเนื้อหาเต็มครั้งแรก
- First Meaningful Paint คือ จะวัดผลเมื่อมองเห็น content หลักของ page ทั้งหมด คือ เริ่มเห็นแต่ยังไม่ต้องโหลดเนื้อหาขึ้นมาก็ได้
- Speed Index คือ จะวัดว่าเว็บของเรามีความเร็วในการโหลดเนื้อหาเพื่อมาแสดงให้ผู้ใช้ดูได้รวดเร็วแค่ไหน โดย Lighthouse เนี่ยมันจะบันทึกวิดีโอการโหลดของเพจนั้นแล้วก็เอามาคิดคะแนนอีกที
4. First CPU Idle คือ จะวัดเวลาที่ใช้ในเพจเพื่อดูว่าเวลาที่ตอบกลับมาที่ใช้น้อยที่สุดคือเท่าไหร่
5. Time to Interactive คือ วัดเมื่อเว็บเรานั้นโหลดเสร็จ และพร้อมที่จะให้ผู้ใช้สามารถใช้งานได้
6. Max Potential First Input Delay คือ วัดเมื่อผู้ใช้เริ่มใช้งานเว็บเป็นครั้งแรก เช่นคลิกปุ่ม แล้วมีการทำงานของ JavaScript จนถึงตอนที่เบราว์เซอร์ตอบสนองกลับมาได้
ลองเลื่อนมาดูคำแนะนำว่าควรแก้ไขอะไรบ้าง
ซึ่งเป็นเรื่องที่ดีมากที่ Dev Tools ช่วยชีวิตเราโดยการบอกว่าเราควรที่จะไปปรับปรุงตรงไหนเพิ่มเติม จะเห็นได้ว่าสิ่งที่ควรทำเลยก็คือ
1️. Compress รูป ซึ่งจะย่อขนาดของรูปโดยใช้โปรแกรม ImageOptim
2. ทำ Lazyload เพื่อไม่ให้โหลดรูปทั้งหมดทีเดียว
3. การใช้ preload เพื่อให้เบราว์เซอร์รู้ว่าโหลดสิ่งนั้นเก็บไว้ก่อน แบบนี้
<link rel="preload" href="/style.css" as="style" />
4️. การทำ Code Splitting โดยหลักการของมันคือการที่เราแบ่ง script ออกมาย่อย ไม่ได้รวมกันใน main.js ไฟล์เดียว ซึ่งถ้าหากใช้ Next.js สามารถทำ Code Splitting ได้โดยการใช้ next/dynamic
5. การลดขนาดของ JavaScript ซึ่งทำได้โดยการลบช่องว่างที่ไม่จำเป็น การปรับโค้ดให้สั้นลงแต่ยังทำงานได้เหมือนเดิม และการทำบีบอัดไฟล์ให้มีขนาดเล็กลง
6. การลบ CSS ที่ไม่ได้ใช้งานออก เพราะ เมื่อเบราว์เซอร์ทำงานมันโหลดทั้งหมดอยู่ดี จึงส่งผลให้เว็บของเราโหลดช้าลง
7. การลดขนาดของ CSS
ลดขนาดเป็น
สุดท้ายหลังจากที่ลองปรับมาแบบสุดความสามารถแล้วพบว่า
จากตอนแรกที่รู้ว่าต้องเริ่มทำเว็บให้เร็วขึ้น โดยที่ไม่มีความรู้อะไรเลยนั้น การอ่านเอกสารเป็นสิ่งที่สำคัญมาก และการลองอ่านและทำตามไปเรื่อย ๆ ผลที่ออกมาก็สามารถปรับได้จริง เมื่อมีบางอย่างที่ไม่เข้าใจก็เริ่มไปปรึกษาคนข้าง ๆ หรือเพื่อน ๆ ในทีมเพื่อปรับปรุงมันอีกครั้งให้ดียิ่งขึ้น
สำหรับคนที่พึ่งเริ่มทำก็อย่าพึ่งท้ออยากให้ทำดูก่อน อย่างตอนนี้ Landing Page บริษัทเรา ได้ 80 กว่าคะแนนแล้ว แต่.. พี่ CTO กลับมาอีกครั้งพร้อมบอกว่า
อาย.. ถ้าได้ 90 คะแนน พี่เลี้ยงชาบู
เราก็คงต้องทำต่อไป เพื่อให้เว็บบริษัทเร็วขึ้นหรอ?
เปล่า เพื่อ ชาบู.. (!ล้อเล่น)
แปะเพิ่มเติมสำหรับการดูว่าการการทำให้คะแนนเพิ่มขึ้นต้องทำไง