เพิ่มความเร็วเว็บบน Shared Hosting ทำได้เองใน cPanel

ตั้งค่า Gzip, Browser Cache และ CDN ผ่าน cPanel โดยไม่ต้องใช้ VPS หรือความรู้เซิร์ฟเวอร์

เพิ่มความเร็วเว็บบน Shared Hosting ทำได้เองใน cPanel

ความเร็วของเว็บไซต์ไม่ได้ขึ้นอยู่กับ VPS หรือ Dedicated Server เพียงอย่างเดียว บน Shared Hosting ที่ใช้ cPanel คุณสามารถปรับแต่งได้หลายอย่างด้วยตัวเอง ไม่ว่าจะเป็นการเปิดใช้งาน Gzip compression, Browser Cache, การตั้งค่า .htaccess อย่างถูกต้อง และการเชื่อมต่อ CDN ฟรีอย่าง Cloudflare บทความนี้จะพาคุณทำทีละขั้นตอนแบบเข้าใจง่าย

ทำไมเว็บถึงช้าบน Shared Hosting?

Shared Hosting มีข้อจำกัดเรื่องทรัพยากรเซิร์ฟเวอร์ เพราะหลายเว็บไซต์ใช้ CPU/RAM ร่วมกัน แต่สาเหตุที่เว็บช้าส่วนใหญ่ไม่ได้อยู่ที่ Hosting เพียงอย่างเดียว ปัญหาที่พบบ่อยได้แก่:

ขั้นที่ 1: เปิดใช้งาน Gzip Compression ผ่าน cPanel

Gzip compression ช่วยลดขนาดไฟล์ที่ส่งจากเซิร์ฟเวอร์ไปยังเบราว์เซอร์ได้ถึง 60-80% โดยเฉพาะไฟล์ HTML, CSS และ JavaScript ใน cPanel ส่วนใหญ่จะมี Optimize Website หรือสามารถตั้งค่าผ่าน .htaccess ได้

วิธีตั้งค่าผ่าน cPanel:

  1. เข้าสู่ cPanel แล้วมองหาหัวข้อ "Software" หรือ "Advanced"
  2. คลิก Optimize Website
  3. เลือก "Compress All Content" แล้วคลิก Update Settings

หากต้องการควบคุมละเอียดขึ้น ให้แก้ไขไฟล์ .htaccess ที่ root ของเว็บโดยตรงผ่าน File Manager ใน cPanel:

# เปิดใช้งาน Gzip Compression
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml
  AddOutputFilterByType DEFLATE text/css text/javascript
  AddOutputFilterByType DEFLATE application/javascript application/x-javascript
  AddOutputFilterByType DEFLATE application/json application/xml
  AddOutputFilterByType DEFLATE image/svg+xml font/woff font/woff2
</IfModule>
Tip: หลังจากเพิ่มโค้ดแล้ว ลองตรวจสอบด้วย dnsxray.com หรือ GTmetrix ว่า Gzip ทำงานแล้วหรือยัง ควรเห็นขนาดไฟล์ลดลงอย่างชัดเจน

ขั้นที่ 2: ตั้งค่า Browser Cache ให้เบราว์เซอร์จำไฟล์ได้นานขึ้น

Browser Cache คือการบอกเบราว์เซอร์ว่าไฟล์ไหนเก็บได้นานแค่ไหน เมื่อผู้เยี่ยมชมกลับมาเยี่ยมชมเว็บอีกครั้ง เบราว์เซอร์จะใช้ไฟล์ที่บันทึกไว้แทนการโหลดใหม่ทุกครั้ง ทำให้เว็บเปิดเร็วขึ้นอย่างเห็นได้ชัด

เพิ่มโค้ดต่อไปนี้ใน .htaccess ผ่าน File Manager ใน cPanel:

# Browser Cache - ตั้งเวลาเก็บไฟล์แต่ละประเภท
<IfModule mod_expires.c>
  ExpiresActive On

  # รูปภาพ - เก็บ 1 ปี
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/png  "access plus 1 year"
  ExpiresByType image/gif  "access plus 1 year"
  ExpiresByType image/webp "access plus 1 year"
  ExpiresByType image/svg+xml "access plus 1 year"
  ExpiresByType image/x-icon "access plus 1 year"

  # CSS และ JavaScript - เก็บ 1 เดือน
  ExpiresByType text/css                "access plus 1 month"
  ExpiresByType application/javascript  "access plus 1 month"
  ExpiresByType text/javascript         "access plus 1 month"

  # ฟอนต์ - เก็บ 1 ปี
  ExpiresByType font/woff   "access plus 1 year"
  ExpiresByType font/woff2  "access plus 1 year"

  # HTML - เก็บ 1 วัน
  ExpiresByType text/html "access plus 1 day"
</IfModule>

# Cache-Control Header
<IfModule mod_headers.c>
  <FilesMatch "\.(ico|jpg|jpeg|png|gif|webp|svg|css|js|woff|woff2)$">
    Header set Cache-Control "max-age=31536000, public"
  </FilesMatch>
</IfModule>

ขั้นที่ 3: เพิ่มประสิทธิภาพรูปภาพผ่าน cPanel

รูปภาพมักเป็นสาเหตุอันดับหนึ่งที่ทำให้เว็บช้า cPanel บางแพ็กเกจมาพร้อมเครื่องมือบีบอัดรูปภาพในตัว แต่ถ้าไม่มี สามารถทำผ่าน WordPress plugin หรือบีบอัดก่อน upload ได้เลย

ขั้นที่ 4: เชื่อมต่อ Cloudflare CDN ฟรีผ่าน cPanel

Cloudflare CDN ช่วยให้ไฟล์ static เช่น รูปภาพ, CSS, JS ถูกเสิร์ฟจาก Server ที่ใกล้ผู้ใช้ที่สุด ลด Latency และลดภาระเซิร์ฟเวอร์ได้อย่างมาก cPanel บางเจ้ามี Cloudflare integration ในตัว หรือสามารถตั้งค่าด้วยตัวเองได้ดังนี้:

  1. สมัครบัญชี Cloudflare ฟรีที่ cloudflare.com
  2. เพิ่มโดเมนของคุณ แล้วเลือกแพ็กเกจ Free
  3. Cloudflare จะสแกน DNS Record ให้อัตโนมัติ ตรวจสอบให้ครบถ้วน
  4. เปลี่ยน Nameserver ในหน้า Domain ของ Hosting ให้ชี้ไป Cloudflare Nameserver ที่ได้รับ
  5. รอ 24-48 ชั่วโมงให้ DNS propagate
  6. เปิดใช้งาน Auto Minify (CSS/JS/HTML) และ Brotli compression ใน Cloudflare Dashboard
Tip: เมื่อเปิดใช้งาน Cloudflare แล้ว ให้เข้า Speed > Optimization แล้วเปิด Rocket Loader สำหรับ JavaScript defer อัตโนมัติ และ Polish สำหรับบีบอัดรูปภาพอัตโนมัติ (ต้องการ Pro plan สำหรับ Polish)

ขั้นที่ 5: เปิดใช้งาน Keep-Alive และปรับ .htaccess เพิ่มเติม

Keep-Alive ช่วยให้เบราว์เซอร์สามารถโหลดหลายไฟล์ผ่าน Connection เดียวกันได้ โดยไม่ต้องสร้าง TCP Connection ใหม่ทุกครั้ง ลดเวลา latency ได้มาก สามารถเปิดใช้ผ่าน .htaccess ได้เลย:

# Keep-Alive Connection
<IfModule mod_headers.c>
  Header set Connection keep-alive
</IfModule>

# ปิด ETag (ลด header overhead)
FileETag None
<IfModule mod_headers.c>
  Header unset ETag
</IfModule>

# เปิดใช้งาน HTTP/2 Push (ถ้า Server รองรับ)
<IfModule mod_http2.c>
  Protocols h2 http/1.1
</IfModule>

ขั้นที่ 6: ใช้ LiteSpeed Cache หรือ Caching Plugin สำหรับ WordPress

หาก Hosting ของคุณใช้ LiteSpeed Web Server (พบบ่อยใน Shared Hosting รุ่นใหม่) ให้ติดตั้ง LiteSpeed Cache plugin ฟรีบน WordPress ทันที เพราะทำงานร่วมกับ Server ได้ดีที่สุด หากไม่ใช่ LiteSpeed ให้ใช้ W3 Total Cache หรือ WP Super Cache แทน

การตั้งค่า LiteSpeed Cache เบื้องต้น:

ขั้นที่ 7: ตรวจสอบ PHP Version ใน cPanel

PHP เวอร์ชันเก่าทำงานช้ากว่าเวอร์ชันใหม่อย่างมาก PHP 8.1+ เร็วกว่า PHP 7.4 ประมาณ 20-30% ใน cPanel ให้ไปที่ Software > Select PHP Version แล้วเปลี่ยนเป็น PHP 8.2 หรือ 8.3 (ตรวจสอบก่อนว่า WordPress และปลั๊กอินรองรับ)

ก่อนทดสอบการตั้งค่า performance แนะนำใช้เครื่องมือฟรีที่ dnsxray.com ตรวจสอบ DNS, SSL, Email Authentication และ Security Headers ของเว็บได้ในที่เดียว ช่วยให้มั่นใจว่าการตั้งค่าทุกอย่างถูกต้องก่อนที่จะ deploy จริง


ตรวจสอบว่าการตั้งค่า Performance ทำงานถูกต้อง

หลังจากตั้งค่าเสร็จแล้ว ให้ทดสอบด้วยขั้นตอนดังนี้:

# 1. ตรวจสอบ Gzip ด้วย curl (ดู Content-Encoding: gzip)
curl -H "Accept-Encoding: gzip" -I https://yourdomain.com

# 2. ตรวจสอบ Cache-Control Header
curl -I https://yourdomain.com/style.css | grep -i "cache-control"

# 3. ตรวจสอบ Server Response Time (ควรน้อยกว่า 200ms)
curl -o /dev/null -s -w "Time to first byte: %{time_starttransfer}s\n" https://yourdomain.com

# 4. ตรวจสอบว่า Cloudflare ทำงาน (ดู CF-Ray header)
curl -I https://yourdomain.com | grep -i "cf-ray"

# 5. วัดขนาดหน้าเว็บก่อนและหลัง
curl -s --compressed https://yourdomain.com | wc -c
Tip: ใช้เครื่องมือออนไลน์ฟรีอย่าง GTmetrix, PageSpeed Insights หรือ WebPageTest เพื่อดูคะแนนก่อนและหลังปรับแต่ง เปรียบเทียบ Waterfall Chart เพื่อดูว่าไฟล์ไหนยังโหลดช้าอยู่ เป้าหมายคือ LCP (Largest Contentful Paint) ควรน้อยกว่า 2.5 วินาที

แก้ปัญหาที่พบบ่อย

Error: "500 Internal Server Error" หลังแก้ .htaccess

เกิดขึ้นเมื่อโค้ดใน .htaccess มี syntax ผิดพลาด หรือ Module บางตัวไม่ได้เปิดใช้งานบนเซิร์ฟเวอร์ แก้ไขโดยเข้า File Manager ใน cPanel แก้ไขหรือลบโค้ดที่เพิ่งเพิ่มออก แล้วทดสอบทีละส่วน นอกจากนี้สามารถดู Error Log ได้จาก cPanel > Logs > Error Log เพื่อดูสาเหตุที่แน่ชัด

Error: "ERR_TOO_MANY_REDIRECTS" หลังเปิด Cloudflare

เกิดจาก SSL Mode ใน Cloudflare ตั้งเป็น "Flexible" แต่เว็บ redirect ไป HTTPS เองอยู่แล้ว ทำให้วนลูป แก้ไขโดยเข้า Cloudflare Dashboard > SSL/TLS แล้วเปลี่ยนจาก Flexible เป็น Full หรือ Full (Strict) ถ้ามี SSL Certificate บน Hosting แล้ว

Error: CSS/JS เก่าไม่ update หลังแก้ไฟล์

เกิดจาก Browser Cache เก็บไฟล์เก่าไว้ ผู้ใช้ต้องกด Ctrl+F5 เพื่อ Hard Reload วิธีแก้ถาวรคือใส่ Version Query String ต่อท้าย URL ของไฟล์ เช่น style.css?v=20260613 ทุกครั้งที่แก้ไขไฟล์ หรือตั้งค่า Cache Busting อัตโนมัติผ่าน WordPress plugin

<!-- ตัวอย่างใส่ version ใน HTML -->
<link rel="stylesheet" href="/style.css?v=20260613">
<script src="/app.js?v=20260613"></script>

Error: Cloudflare บล็อก Admin Panel WordPress

Cloudflare WAF อาจบล็อก Request บาง URL ที่ดูน่าสงสัย เช่น wp-admin ในโหมด "Under Attack" แก้ไขโดยเพิ่ม Firewall Rules ใน Cloudflare ให้ Bypass WAF สำหรับ IP ของคุณเอง หรือเปิด Security Level เป็น "Essentially Off" สำหรับ Path /wp-admin/ เท่านั้น

Error: รูปภาพโหลดช้าแม้เปิด CDN แล้ว

ตรวจสอบว่า Cloudflare Cache ทำงานกับรูปภาพหรือไม่ โดยดู Header CF-Cache-Status: HIT ถ้าแสดง MISS แสดงว่า Cloudflare ยังไม่ได้ Cache ไฟล์นั้น รอให้มีคนโหลดหน้านั้นสักครั้งแล้ว Cloudflare จะ Cache ให้อัตโนมัติ หรือใช้ Cache Rules ใน Cloudflare เพื่อบังคับ Cache ทันที


คำถามที่พบบ่อย

ต้องอัพเกรดไป VPS เพื่อให้เว็บเร็วขึ้นไหม?

ไม่จำเป็นเสมอไป สำหรับเว็บไซต์ขนาดเล็กถึงกลาง (traffic น้อยกว่า 10,000 visit/วัน) Shared Hosting ที่ตั้งค่าถูกต้องสามารถทำงานได้ดีมาก โดยเฉพาะเมื่อใช้ร่วมกับ Cloudflare CDN และ Caching Plugin อย่างเหมาะสม ควรพิจารณาอัพเกรดเมื่อเซิร์ฟเวอร์ load สูงตลอดเวลาหรือมีปัญหาเรื่อง Concurrent Users จริงๆ

Gzip กับ Brotli ต่างกันอย่างไร และใช้อะไรดีกว่า?

Brotli เป็น Compression Algorithm ใหม่กว่าของ Google บีบอัดได้ดีกว่า Gzip ประมาณ 15-20% แต่ต้องการ Server ที่รองรับ (Apache 2.4.26+ หรือ Nginx 1.11.6+) ถ้า Cloudflare ทำงานอยู่ Brotli จะถูกเปิดใช้อัตโนมัติสำหรับ HTTPS connections แนะนำให้ใช้ทั้งคู่โดยตั้งค่า Gzip เป็น Fallback สำหรับเบราว์เซอร์เก่า

Browser Cache ตั้งค่าแล้วทำไมยัง Test ไม่ผ่าน GTmetrix?

GTmetrix และ PageSpeed Insights จะ Flag Warning สำหรับ Resource ที่มาจากบริการภายนอก เช่น Google Fonts, Google Analytics, Facebook Pixel ซึ่งคุณควบคุม Cache header ของมันไม่ได้ วิธีแก้คือ Self-host Google Fonts โดยดาวน์โหลดมาไว้บน Hosting เอง และใช้ Server-side Analytics แทน Client-side Script ที่ไม่จำเป็น