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