Web
เฮ้ย! WordPress ช้าเนี่ย ปัญหาโลกแตกของคนทำเว็บเลยนะ สมัยผมทำร้านเน็ต SiamCafe นี่ ลูกค้าบ่นเรื่องเว็บโหลดช้าประจำ ยิ่งสมัยก่อนเน็ตมันไม่ได้แรงแบบนี้ด้วยแล้ว ยิ่งต้องจูนกันสุดชีวิต
ทำไมเว็บช้าถึงสำคัญ? ก็เพราะคนมันใจร้อนไง! ถ้าเว็บโหลดนานเกิน 3 วิ คนก็ปิดหนีไปแล้ว เสียลูกค้า เสียโอกาสทางธุรกิจหมด ยิ่ง Google เค้าให้ความสำคัญกับ Page Speed ด้วยนะ เว็บช้าอันดับก็ตกตามไปด้วย
ก่อนจะแก้ เราต้องรู้ก่อนว่าอะไรมันฉุดรั้งเว็บเราอยู่ หลักๆ เลยมี 4 เรื่อง:
Hosting คือหัวใจหลักของเว็บเราเลยนะ ถ้า Hosting ไม่ดี ต่อให้ทำอะไรอย่างอื่นก็แทบไม่มีประโยชน์ สมัยก่อนผมเคยเจอ Hosting ที่ Shared Resources กันแบบสุดๆ คือเว็บอื่นโหลดอะไรเยอะแยะ เว็บเราก็พลอยช้าไปด้วย
Hosting มีหลายแบบ หลักๆ ก็มี Shared Hosting, VPS, Dedicated Server, และ Cloud Hosting แต่ละแบบก็มีข้อดีข้อเสียต่างกัน
Shared Hosting: ถูกสุด แต่ก็แชร์ Resources กับคนอื่น เหมาะกับเว็บเล็กๆ ที่คนเข้าไม่เยอะ
VPS (Virtual Private Server): เหมือนเช่าห้องในคอนโด ได้ Resources เป็นสัดส่วนมากขึ้น แรงกว่า Shared Hosting
Dedicated Server: เช่า Server ทั้งเครื่อง แรงสุด แต่ก็แพงสุด เหมาะกับเว็บใหญ่ๆ ที่ต้องการ Performance สูง
Cloud Hosting: ยืดหยุ่น ปรับ Scale ได้ตามต้องการ จ่ายเท่าที่ใช้
ผมแนะนำว่าถ้าเว็บเริ่มโตแล้ว ให้ขยับไป VPS หรือ Cloud Hosting ดีกว่า รับรองเห็นผลชัดเจน
ลองใช้ Tools พวก GTmetrix หรือ Pingdom Website Speed Test ดู จะได้รู้ว่า Hosting เรามันตอบสนองช้าแค่ไหน
อีกวิธีคือลองเปิดเว็บตัวเองดู ถ้ามันอืดๆ หน่วงๆ ก็สันนิษฐานได้เลยว่า Hosting มีปัญหา
Theme เนี่ยสำคัญไม่แพ้ Hosting เลยนะ บาง Theme สวยก็จริง แต่โค้ดรกมาก โหลด Script มาเยอะแยะเต็มไปหมด ทำให้เว็บอืด
มองหา Theme ที่เน้นความเร็วเป็นหลัก พวก Theme ที่มี Page Builder เยอะๆ อาจจะไม่ใช่ตัวเลือกที่ดี เพราะมันจะสร้างโค้ดเยอะแยะเกินความจำเป็น
ลองดู Theme ฟรีจาก WordPress Repository ก็ได้ หลายๆ Theme เค้า Optimized มาดีมาก หรือถ้าจะใช้ Theme Premium ก็เลือกจากผู้พัฒนาที่น่าเชื่อถือ
ใช้ Tools พวก GTmetrix หรือ Pingdom Website Speed Test เหมือนเดิม แล้วดูตรง Waterfall Chart จะเห็นว่าไฟล์ไหนโหลดนานที่สุด ถ้าไฟล์ของ Theme เยอะเกินไป ก็แสดงว่า Theme นั้นอาจจะไม่ค่อยดี
หรืออีกวิธีคือลองเปลี่ยนไปใช้ Theme Default ของ WordPress แล้วดูว่าเว็บเร็วขึ้นไหม ถ้าเร็วขึ้นเยอะ ก็แปลว่า Theme เก่าเป็นตัวปัญหา
Plugin เนี่ยเป็นดาบสองคม ติดตั้งเยอะก็สะดวกสบาย แต่ก็ทำให้เว็บช้าได้เหมือนกัน
อันนี้สำคัญมาก Plugin ไหนไม่ได้ใช้แล้วก็ลบทิ้งไปเลย อย่าเสียดาย เพราะมันเปลือง Resources โดยใช่เหตุ
ก่อนติดตั้ง Plugin อะไรก็ตาม ลองอ่าน Review ดูก่อนว่าเค้าว่ายังไง Plugin ไหนคนบ่นว่าหนัก ก็อย่าไปใช้
ถ้า Plugin ที่จำเป็นต้องใช้มีหลายตัว ลองมองหา Plugin ที่ทำหน้าที่เดียวกันแต่ Lightweight กว่า
ผมเคยเจอเคสที่ลูกค้าติดตั้ง Plugin Social Media Sharing ไว้ 5-6 ตัว สุดท้ายก็ใช้แค่ตัวเดียว ที่เหลือก็กิน Resources ฟรีๆ
มี Plugin บางตัวที่ช่วยให้ WordPress เร็วขึ้นได้จริง:
รูปภาพ วิดีโอ เป็นตัวการสำคัญที่ทำให้เว็บโหลดช้า เพราะไฟล์มันใหญ่มาก ก่อนอัพโหลดขึ้นเว็บ ต้องบีบอัด ลดขนาดก่อนเสมอ
ใช้ Tools พวก TinyPNG หรือ ImageOptim ในการบีบอัดรูปภาพ พวกนี้จะบีบอัดรูปภาพให้มีขนาดเล็กลง โดยที่คุณภาพยังดีอยู่ หรือจะใช้ Plugin Image Optimization ที่บอกไปข้างบนก็ได้
ก่อนอัพโหลดรูปภาพขึ้นเว็บ ลองเช็คดูก่อนว่าขนาดมันใหญ่เกินความจำเป็นไหม ถ้ามันใหญ่เกินไป ก็ปรับขนาดให้เล็กลงก่อน
สมมติว่าเราจะใช้รูปภาพในขนาด 500x500 Pixel ก็ไม่จำเป็นต้องอัพโหลดรูปภาพขนาด 2000x2000 Pixel ขึ้นไป
CDN คือเครือข่าย Server ที่กระจายอยู่ทั่วโลก CDN จะช่วยให้เว็บโหลดเร็วขึ้น เพราะมันจะส่งไฟล์ Media จาก Server ที่อยู่ใกล้กับผู้ใช้มากที่สุด
มี CDN หลายเจ้าให้เลือกใช้ เช่น Cloudflare, MaxCDN, KeyCDN
| ประเภท Hosting | ราคา | ประสิทธิภาพ | เหมาะสำหรับ |
|---|---|---|---|
| Shared Hosting | ถูก | ต่ำ | เว็บเล็กๆ, คนเข้าไม่เยอะ |
| VPS | ปานกลาง | ปานกลาง | เว็บขนาดกลาง, ต้องการ Performance มากกว่า Shared Hosting |
| Dedicated Server | แพง | สูง | เว็บขนาดใหญ่, ต้องการ Performance สูงสุด |
| Cloud Hosting | ตามการใช้งาน | ยืดหยุ่น | เว็บที่ต้องการปรับ Scale ได้ตามต้องการ |
Lazy Load คือการโหลดรูปภาพเฉพาะตอนที่ผู้ใช้เลื่อนหน้าจอลงมาถึงรูปภาพนั้นๆ วิธีนี้จะช่วยให้หน้าเว็บโหลดเร็วขึ้นมาก
<img src="placeholder.jpg" data-src="real-image.jpg" alt="Image" >
<script>
document.addEventListener("DOMContentLoaded", function() {
var lazyloadImages = document.querySelectorAll("img.lazy");
var lazyloadThrottleTimeout;
function lazyload () {
if(lazyloadThrottleTimeout) {
clearTimeout(lazyloadThrottleTimeout);
}
lazyloadThrottleTimeout = setTimeout(function() {
var scrollTop = window.pageYOffset;
lazyloadImages.forEach(function(img) {
if(img.offsetTop < (window.innerHeight + scrollTop)) {
img.src = img.dataset.src;
img.classList.remove('lazy');
}
});
if(lazyloadImages.length == 0) {
document.removeEventListener("scroll", lazyload);
window.removeEventListener("resize", lazyload);
window.removeEventListener("orientationChange", lazyload);
}
}, 20);
}
document.addEventListener("scroll", lazyload);
window.addEventListener("resize", lazyload);
window.addEventListener("orientationChange", lazyload);
});
</script>
Code นี้เป็นแค่ตัวอย่างนะ จะเอาไปใช้จริงก็ต้องปรับแต่งให้เข้ากับ Theme ของตัวเองด้วย
หวังว่าบทความนี้จะเป็นประโยชน์กับทุกคนนะครับ ถ้ามีคำถามอะไรก็ถามมาได้เลย ผมยินดีตอบ
อย่าลืมแวะไปอ่านบทความอื่นๆ ใน SiamCafe Blog ด้วยนะ มีเรื่อง IT สนุกๆ อีกเยอะเลย
WordPress ช้าเนี่ยแก้ได้แน่นอน ขอแค่เราเข้าใจสาเหตุและลงมือทำอย่างถูกวิธี เริ่มจาก Hosting, Theme, Plugin, Media และอย่าลืม Optimize Database ด้วย
ถ้าทำตามที่ผมบอกแล้วยังไม่ดีขึ้น ลองปรึกษาผู้เชี่ยวชาญดูครับ เค้าอาจจะช่วยหาสาเหตุที่ซับซ้อนกว่านั้นได้
สุดท้ายนี้ ขอให้ทุกคนทำเว็บ WordPress ได้เร็ว แรง ทะลุนรกนะครับ! แล้วเจอกันใหม่ในบทความหน้า ที่ SiamCafe Blog
<img src="my-huge-image.jpg" alt="My Image" width="600" height="400" loading="lazy">
อย่าลืมใส่ attribute `loading="lazy"` ด้วยนะ มันจะบอกให้ browser โหลดรูปภาพเฉพาะตอนที่ผู้ใช้ scroll มาเจอเท่านั้น
<link rel="stylesheet" href="style.min.css">
<script src="script.min.js"></script>