mod_deflate เป็น Module ของ web server ที่ใช้ในการบีบอัดขข้อมูล (Compress ) ให้มีขนาดเล็กลง ก่อนที่จะส่งไปให้ Client หลังจากฝั่ง Client (Browser) ได้รับ response จากฝั่ง server แล้ว ก็จะทำการถอดการบีบอัดข้อมูลออกมาเหมือนเดิม (Uncompress) เหตุนี้เองที่ทำให้การโอนถ่ายข้อมูลจะรวดเร็วยิ่งขึ้น แถมยังช่วยลดปริมาณข้อมูล(traffic) ได้ดีอีกด้วย เหมือนตอนนี้ mod_deflate ถูกออกมาแทนที่ mod_gzip ในปัจจุบัน จะเห็นว่า Linux version ใหม่ๆ เช่น CentOS 7 จะไม่มี Module mod_gzip ดังนั้นในบทความนี้ผมเลยจะขอเอาวิธีการเปิดใช้งาน mod_deflate บน apache มาแนะนำให้ผู้อ่านได้ลองนำเอาไปใช้กันนะครับ
ภาพด้านบน เป็นการทดสอบ ก่อนที่ยังไมไ่ด้ Enable : Mod_Deflate
ว่าแล้ว เรามาเริ่มทำการเปิดใช้ mod_deflate กันเลย
ก่อนอื่นให้ทำการแก้ไขไฟล์ deflate.conf (ถ้าไม่มี ก็แนะนำสร้างใหม่) ในที่นี้ผมใช้ Apache 2.4.X บน CentOS 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
vi /etc/httpd/conf.d/deflate.conf # Insert filter SetOutputFilter DEFLATE # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch bMSIE !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary # Don't compress already compressed stuff ! SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .pdf$ no-gzip dont-vary # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary # Log Stuff ! # DeflateFilterNote Input input_info # DeflateFilterNote Output output_info # DeflateFilterNote Ratio ratio_info # LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate # CustomLog /var/log/httpd/deflate_log deflate |
จากนั้นทำการ restart web server อีกที
1 |
# service httpd restart |
ทำการทดสอบโดยใช้ request ไปหา server ด้วย wget
โดยจะส่ง HTTP Header ต่างกัน แบบ Request ด้วย Accept-Encoding : gzip และ แบบธรรมดา (ไม่ได้ระบุ Accept-Encoding)
จะเห็นว่าผลที่ได้จะต่างกันอย่างเห็นได้ชัดเจนมาก ๆ โดยในที่นี้ได้ทำการ Request ไปหาไฟล์ฺเดียวกัน
– แบบธรรมดา (ไม่ได้ระบุ Accept-Encoding) : 94k
– แบบระบุ Accept-Encoding : gzip : 33k
อย่าลืม check จาก phpinfo ด้วยนะครับ ว่า gzip compression มัน Enabled แล้วหรือยัง
ทำการทดสอบโดยใช้ Online Tools
https://varvy.com/pagespeed/
อีกเว็บสำหรับใช้ในการทดสอบ
ตรวจสอบโดยใช้ Developer tools ของ Google Chrome
Admin@rockdevper
Comments are closed