Gzip و Deflate چیست و چرا باید فعال شوند؟
Gzip و Deflate دو روش فشردهسازی داده در سطح وبسرور هستند. هنگامی که یک بازدیدکننده درخواست بارگذاری یک صفحه وب را میدهد، سرور به جای ارسال فایلهای خام HTML، CSS و JavaScript، آنها را فشرده میکند (مانند یک فایل Zip) و سپس ارسال میکند. مرورگر کاربر این فایل فشرده را دریافت کرده و آن را از حالت فشرده خارج میکند.
نتیجه: حجم دادههای انتقالی بین سرور و کاربر تا ۷۰٪ کاهش مییابد که به معنای بارگذاری سریعتر سایت و کاهش مصرف پهنای باند است.
بخش اول: بررسی وضعیت فشردهسازی
قبل از اعمال هرگونه کد، باید مطمئن شوید که فشردهسازی در حال حاضر فعال نیست.
۱. بررسی با ابزارهای آنلاین
-
از ابزارهای آنلاین مانند GTmetrix یا Google PageSpeed Insights برای تحلیل سایت خود استفاده کنید.
-
در بخش توصیههای سرعت، اگر هشداری مانند "Enable text compression" یا "Enable Gzip/Deflate" مشاهده میکنید، باید آن را فعال کنید.
۲. استفاده از ابزار داخلی cPanel (روش توصیه شده)
اگر هاست شما از ابزار Optimize Website پشتیبانی میکند (که در مقاله ۱۷ به آن اشاره شد)، بهترین راه فعالسازی، استفاده از همان ابزار است:
-
وارد cPanel شوید.
-
به بخش Software و سپس Optimize Website بروید.
-
گزینه Compress all content را فعال و ذخیره کنید.
توجه: اگر فعالسازی از طریق ابزار cPanel موفقیتآمیز بود، نیازی به اضافه کردن دستی کد به فایل
.htaccessنیست.
بخش دوم: فعالسازی دستی Gzip/Deflate با .htaccess
اگر ابزار Optimize Website در cPanel شما وجود نداشت یا به درستی کار نکرد، میتوانید این فشردهسازی را مستقیماً از طریق فایل تنظیمات سرور (.htaccess) فعال کنید.
۱. دسترسی به فایل .htaccess
-
وارد File Manager در cPanel شوید.
-
به پوشه
public_htmlبروید. -
فایل
.htaccessرا پیدا کرده، روی آن راست کلیک کرده و Edit را انتخاب کنید.-
(اگر فایل را نمیبینید، از Settings در بالای صفحه، گزینه Show Hidden Files (dotfiles) را فعال کنید.)
-
۲. افزودن کد فشردهسازی
کد زیر را قبل از هر دستور دیگری در ابتدای فایل .htaccess قرار دهید:
# BEGIN GZIP/DEFLATE COMPRESSION
<IfModule mod_deflate.c>
# فشرده سازی انواع فایل های متنی و کد
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/eot
AddOutputFilterByType DEFLATE font/svg
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
# END GZIP/DEFLATE COMPRESSION
-
فایل را ذخیره (Save Changes) کنید.
بخش سوم: عیبیابی و نکات مهم
۱. خطای ۵۰۰ پس از اعمال کد
-
اگر بلافاصله پس از ذخیره فایل
.htaccessبا خطای ۵۰۰ Internal Server Error مواجه شدید، به این معنی است که وبسرور شما (احتمالاً Nginx به جای آپاچی یا تنظیمات خاص دیگر) از ماژولmod_deflateپشتیبانی نمیکند. -
راهکار: فوراً کد اضافه شده را حذف کنید و سایت خود را بررسی نمایید. در این حالت، باید برای فعالسازی فشردهسازی با پشتیبانی هاست خود تماس بگیرید.
۲. ناهماهنگی با ابزارهای کش
-
اگر از افزونههای کش وردپرس (مانند WP Rocket) یا کش سرور (LiteSpeed) استفاده میکنید، این ابزارها اغلب فشردهسازی Gzip را به صورت خودکار فعال میکنند.
-
راهکار: اگر از این افزونهها استفاده میکنید، ابتدا تنظیمات فشردهسازی آنها را بررسی کنید و از تداخل با کدهای دستی در
.htaccessخودداری نمایید.
۳. حذف تکرارها در وردپرس
-
اگر سایت شما وردپرسی است، اطمینان حاصل کنید که کدهای فشردهسازی در بخش تنظیمات افزونههای بهینهسازی یا کش، تکرار نشده باشند. تکرار کد میتواند باعث تداخل شود.
