Web
น้องๆ เคยเจอไหม เข้าเว็บทีนึง รอโหลดนานจนหงุดหงิด? นั่นแหละคือปัญหาเรื่อง Web Performance ที่ยังไม่ดีพอ ซึ่ง Web Performance Optimization (WPO) ก็คือการปรับแต่งเว็บไซต์เราให้มันโหลดเร็วขึ้น ทำงานได้มีประสิทธิภาพมากขึ้น นั่นเอง
สมัยผมทำร้านเน็ต SiamCafe เมื่อ 20 กว่าปีก่อน เรื่องเน็ตช้าเนี่ยเป็นอะไรที่ลูกค้าบ่นกันประจำ ยิ่งเว็บไหนโหลดรูปเยอะๆ นี่มีเคือง เพราะฉะนั้นเรื่องความเร็วของเว็บเนี่ยสำคัญมากๆ นะ
ทำไมถึงสำคัญน่ะเหรอ? คิดง่ายๆ นะ
สรุปง่ายๆ WPO คือการทำให้เว็บเราเร็วขึ้น เพื่อให้คนใช้แฮปปี้ Google ชอบ และเราก็รวยขึ้น (ถ้าเว็บเราขายของนะ)
น้องๆ รู้ไหมว่าเวลาเราเข้าเว็บเนี่ย เบื้องหลังมันมีการ "คุย" กันระหว่าง Browser เรากับ Server ของเว็บนั้นๆ ซึ่งการ "คุย" กันแต่ละครั้งเนี่ย เราเรียกว่า HTTP Request ยิ่งเว็บเรามีรูปเยอะ มี CSS เยอะ มี JavaScript เยอะ ก็ยิ่งต้อง "คุย" กันหลายรอบ
สมัยผมทำร้านเน็ตเนี่ย บางทีลูกค้าเปิดเว็บที่มีรูปเยอะๆ พร้อมกันหลายคน นี่ถึงกับทำให้เน็ตทั้งร้านอืดเลย เพราะฉะนั้นการลดจำนวน HTTP Request ก็เป็นอะไรที่สำคัญมากๆ
Browser Caching คือการที่ Browser เรา "จำ" ไฟล์ต่างๆ ของเว็บที่เราเคยเข้าแล้วไว้ในเครื่องเรา พอเรากลับมาเข้าเว็บเดิมอีกที Browser ก็ไม่ต้องโหลดไฟล์พวกนั้นใหม่ ทำให้เว็บโหลดเร็วขึ้น
เหมือนเวลาเราไปร้านอาหารเดิมๆ แล้วเราสั่งเมนูเดิมๆ พนักงานก็จำได้ว่าเราชอบอะไร ไม่ต้องถามใหม่ทุกครั้ง Browser Caching ก็เหมือนกัน
การตั้งค่า Browser Caching ให้เหมาะสมก็เป็นอีกเรื่องที่ต้องใส่ใจนะ
รูปภาพเนี่ยแหละ ตัวการทำให้เว็บช้าเลย! เพราะรูปภาพส่วนใหญ่มักจะมีขนาดใหญ่ การ Optimize รูปภาพให้มีขนาดเล็กลง โดยที่คุณภาพยังดีอยู่ ก็เป็นอะไรที่สำคัญมากๆ
สมัยก่อนผมต้องมานั่ง Resize รูปทีละรูปด้วย Photoshop กว่าจะได้รูปที่ขนาดพอดีๆ นี่เสียเวลาไปเยอะ เดี๋ยวนี้มีเครื่องมือให้ใช้เยอะแยะ สะดวกสบายกว่าเยอะ
เริ่มต้นง่ายๆ เลยน้อง ลองเข้าไปเช็คเว็บตัวเองด้วย Google PageSpeed Insights ดูสิ มันจะบอกว่าเว็บเรามีปัญหาตรงไหนบ้าง แล้วก็แนะนำวิธีแก้ไขให้ด้วย
เครื่องมือนี้ฟรี แถมยังละเอียดมากๆ ลองเล่นดูนะ
ไฟล์ CSS และ JavaScript ที่เราเขียนเนี่ย มักจะมีช่องว่าง มี Comment ที่ไม่จำเป็น ซึ่งพวกนี้ทำให้ไฟล์มีขนาดใหญ่ขึ้น การ Minify ก็คือการเอาพวกนี้ออกไป ทำให้ไฟล์มีขนาดเล็กลง
/* Before Minification */
body {
font-family: Arial, sans-serif; /* Set the font */
margin: 0; /* Remove default margin */
}
/* After Minification */
body{font-family:Arial,sans-serif;margin:0;}
สมัยนี้มีเครื่องมือ Minify ให้ใช้เยอะแยะ เลือกใช้ได้ตามสะดวกเลย
อย่างที่บอกไป รูปภาพคือตัวการทำให้เว็บช้า ลองใช้เครื่องมือ Optimize รูปภาพดูนะ มีทั้งแบบ Online และแบบ Software ให้เลือกใช้
หลักการง่ายๆ คือ ลดขนาดรูปภาพให้เล็กลง โดยที่คุณภาพยังดีอยู่
ลองดูเว็บ SiamCafe Blog เป็นตัวอย่างก็ได้ ผมพยายาม Optimize รูปภาพให้เว็บโหลดเร็วๆ อยู่เสมอ
การตั้งค่า Browser Caching ทำได้หลายวิธี วิธีที่ง่ายที่สุดคือการแก้ไขไฟล์ .htaccess (สำหรับ Apache Server) หรือไฟล์ config ของ Server อื่นๆ
# Enable browser caching
Header set Cache-Control "max-age=604800, public"
Header set Cache-Control "max-age=2592000, public"
Code นี้เป็นการบอกให้ Browser จำไฟล์รูปภาพไว้ 7 วัน และจำไฟล์ CSS/JS ไว้ 30 วัน
นอกจากวิธีที่ผมบอกไปแล้ว ก็ยังมีทางเลือกอื่นๆ อีกนะ เช่น
ลองดูตารางเปรียบเทียบข้อดีข้อเสียของแต่ละทางเลือกดูนะ
| ทางเลือก | ข้อดี | ข้อเสีย |
|---|---|---|
| Minify CSS/JS | ทำได้ง่าย, เห็นผลเร็ว | ต้องทำซ้ำทุกครั้งที่แก้ไขไฟล์ |
| Optimize Images | ลดขนาดไฟล์ได้เยอะ | อาจทำให้คุณภาพรูปภาพลดลง |
| Leverage Browser Caching | ลดการโหลดไฟล์ซ้ำๆ | ต้องตั้งค่า Server ให้ถูกต้อง |
| CDN | เว็บโหลดเร็วขึ้นทั่วโลก | มีค่าใช้จ่าย |
หวังว่าน้องๆ จะได้ไอเดียไปปรับปรุงเว็บตัวเองกันนะ ลองเข้าไปดูบทความอื่นๆ ใน SiamCafe Blog ได้เลย มีเรื่อง IT อีกเยอะแยะที่น่าสนใจ
น้องๆ เคยเจอไหม? ลูกค้าบ่น "พี่ๆ เว็บช้าจัง!" สมัยผมทำร้านเน็ต SiamCafe นี่เจอประจำ ยิ่งยุค dial-up นะ โอ้โห... นรกชัดๆ กว่าจะโหลดรูปเสร็จ
Web performance optimization เนี่ย มันเหมือนการปรับแต่งรถแข่งอ่ะน้อง ทำให้มันแรงขึ้น เร็วขึ้น ประหยัดน้ำมันขึ้น (Bandwidth) แต่ไม่ต้องเสียเงินเปลี่ยนเครื่องยนต์ใหม่ (Server)
จำไว้เลย หัวใจหลักคือทำให้เว็บโหลดเร็วขึ้น แสดงผลไวขึ้น และ user experience ดีขึ้น
รูปภาพนี่ตัวดีเลย กิน bandwidth มหาศาล สมัยก่อนผมใช้ Photoshop ลดขนาดรูปภาพก่อนอัพโหลดเสมอ เดี๋ยวนี้มีเครื่องมือออนไลน์เยอะแยะ เลือกใช้ตามสะดวกเลย
ลองใช้พวก compressjpeg.com หรือ tinypng.com ดูดิ ลดขนาดได้เยอะ แถมคุณภาพแทบไม่เปลี่ยน
อันนี้ง่ายมาก บอก browser ให้จำไฟล์ต่างๆ ไว้ในเครื่องลูกค้า เช่น รูปภาพ, CSS, JavaScript พอเขากลับมาเยี่ยมเว็บเราอีกครั้ง Browser จะไม่ต้องโหลดใหม่ทั้งหมด โหลดจาก Cache แทน เร็วกว่าเห็นๆ
# .htaccess (สำหรับ Apache)
Header set Cache-Control "max-age=2592000"
CSS กับ JavaScript ที่เราเขียนเนี่ย บางทีมันมีช่องว่าง มี comments เยอะแยะ พวกนี้มันกิน bandwidth หมด จับมาย่อให้เหลือแต่เนื้อๆ เน้นๆ เลยน้อง
ลองใช้พวกเครื่องมือออนไลน์ เช่น minifycode.com หรือ jscompress.com ดูนะ
ถ้าเว็บเรามีคนเข้าเยอะๆ จากทั่วประเทศ หรือทั่วโลก การใช้ CDN จะช่วยให้เว็บโหลดเร็วขึ้น เพราะ CDN มันจะเอาไฟล์ต่างๆ ของเราไปเก็บไว้ใน Server หลายๆ ที่ทั่วโลก เวลาลูกค้าเข้าเว็บเรา CDN จะส่งไฟล์จาก Server ที่อยู่ใกล้เขาที่สุด เร็วกว่าส่งจาก Server หลักของเราที่เดียว
iCafeForex ก็ใช้ CDN นะน้อง ยิง Ads ไปทั่วโลก เว็บต้องเร็ว!
สาเหตุมีเยอะแยะน้อง รูปภาพใหญ่ไป, Server ช้า, Code ไม่ดี, Browser Cache ไม่ได้เปิดใช้งาน ลองไล่เช็คทีละอย่าง
สำคัญมาก! รูปภาพกิน bandwidth เยอะที่สุดในเว็บส่วนใหญ่ ลดขนาดรูปภาพได้ ก็เหมือนประหยัดค่าน้ำมันได้เยอะ
ถ้าเว็บเราคนเข้าน้อยๆ ไม่ได้เน้น Traffic มากมาย ก็อาจจะยังไม่จำเป็น แต่ถ้าอยากให้เว็บเร็วขึ้นในทุกที่ การใช้ CDN ก็เป็นทางเลือกที่ดี
Browser จะจำไฟล์ต่างๆ ของเว็บเราไว้ในเครื่อง พอเขากลับมาเยี่ยมเว็บอีกครั้ง Browser จะโหลดไฟล์จาก Cache แทนที่จะโหลดจาก Server อีกครั้ง ทำให้โหลดเร็วขึ้น
Web performance optimization ไม่ใช่เรื่องยาก แต่มันต้องทำอย่างสม่ำเสมอ คอยปรับปรุง คอยแก้ไข อย่าปล่อยให้เว็บช้าจนลูกค้าหนีหายหมด
ลองเอาเทคนิคที่พี่บอกไปลองใช้ดูนะ แล้วน้องจะเห็นผลลัพธ์ที่แตกต่าง
อย่าลืมแวะไปอ่านบทความอื่นๆ ใน SiamCafe Blog ด้วยนะ มีเคล็ดลับ IT เด็ดๆ อีกเยอะ