یکی از خطاهای بسیار مهمی که موقع تست سرعت سایت با GTmetrix باهاش مواجه میشید و بسیار هم مهمه با عنوان Accept-Encoding header در جی تی متریکس به شما نمایش داده میشه که مربوط به قابلیت فشرده سازی فایلها در هاست یا همون Gzip هست. اگر با Gzip آشنایی ندارید پیشنهاد میکنم برای آشنایی بهتر موضوع از مقاله آموزش رفع خطای Enable gzip compression در GTmetrix استفاده کنید.
قابلیت Gzip این امکان رو به شما میده که سرور شما به جای ارسال فایلهای هر صفحه به صورت نسخه اصلی میاد و یک نسخه فشرده شده از این فایلها رو برای کاربران ارسال میکنه. در نتیجه حجم کلیه فایلها کمتر شده و از طرفی چون مرورگر از این قابلیت پشتیبانی میکنه میاد و فایلها رو که به صورت فشرده شده دریافت کرده به حالت نسخه اصلی پردازش میکنه و در نهایت صفحه با سرعت بالاتری لود میشه.
در این آموزش قصد دارم به نحوه برطرف کردن خطای Accept-Encoding header در جی تی متریکس بپردازم که با استفاده از این آموزش میتونید اقدام به فعال سازی حالت Gzip کرده و در نهایت مشکل Specify a Vary: Accept-Encoding header رو برطرف بکنید.
آموزش رفع خطای Accept-Encoding header در gtmetrix
همونطور که اشاره کردم وقتی قابلیت Gzip در هاست و سرور شما فعال نباشه، وقتی درخواستهای header را بررسی کنید گزینه vary :accept encoding در سایت فعال نخواهد بود و به شما نشون داده نمیشه. اما اگر این قابلیت در هاست و سرور فعال باشه با تصویری مثل زیر باید مواجه بشید.
حالا اگر این قابلیت در هاست و سرور فعال نباشه، به جای اینکه فایلها به صورت فشرده شده و در حالت Gzip ارسال بشن، با نسخه اصلی که حجم بالایی داره برای مرورگر ارسال خواهند شد. وقتی این حالت پیش بیاد حجم بالاتری از ترافیک مصرف میشه و به همین ترتیب با توجه به سرعت اینترنت کاربران بازدیدکننده هم باعث میشه که لود کامل سایت مدت زمان بیشتری طول بکشه.
پس یکی از مقولههای مهم سئو سایت که مربوط به سرعت لود صفحات هست رو از دست میدین و باعث عدم بهینه بودن سایت خواهد شد. حالا برای برطرف کردن این خطا کافیه قابلیت Gzip رو در سرور و هاست خودتون فعال داشته باشید. در صورت بررسی سایت با جی تی متریکس این خطا مشابه تصویر زیر نشون داده میشه.
اگر هم سایتتون رو با استفاده از pingdom تست کننید این خطا به صورت تصویر زیر نشون داده خواهد شد.
بررسی فعال بودن Accept-Encoding header
قبل از اینکه به برطرف کردن خطا بپردازید باید این مسئله رو هم بدونید که آیا قابلیت Gzip که راهکار حل خطای Accept-Encoding header هست داخل هاست شما فعال هست یا خیر. برای این منظور به وبسایت checkgzipcompression.com مراجعه کنید و سپس مشابه چیزی که در تصویر زیر مشاهده میکنید آدرس کامل سایت خودتون را در فیلد مربوطه وارد کرده و روی آیکون جستجو کلیک کرده و منتظر بمونید تا سایت آنالیز شده و نتیجه به شما اعلام بشه. در صورتی که این قابلیت فعال باشه میزان تاثیری که فشرده سازی روی آدرس اصلی سایت شما خواهد داشت رو هم نشون میده.
رفع خطای Accept-Encoding header در سرور آپاچی
در صورتی که سرور شما آپاچی هست کافیه با اضافه کردن کد زیر به فایل htaccess. ارور Accept-Encoding header رو در وب سرور آپاچی برطرف کنید. این فایل همون فایل htaccess. موجود در هاست شما هست که در روت هاست قرار داره و برای دسترسی بهش کافیه به File Manager هاست مراجعه کنید. سپس گزینه Edit رو برای ویرایش فایل انتخاب کرده و کدهای زیر رو به انتهای این فایل اضافه کنید.
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/json Header append Vary: Accept-Encoding </IfModule>
این کد با استفاده از ماژول mod_deflate در آپاچی، فشردهسازی Gzip را برای انواع مختلف فایلهای متنی فعال میکند. همچنین خط Header append Vary: Accept-Encoding باعث میشود تا هدر مورد نظر به پاسخهای HTTP اضافه شود که دقیقا همون چیزی هست که GTmetrix برای رفع ارور Specify a Vary: Accept-Encoding header انتظار داره.
نکات مهم
اطمینان حاصل کنید که ماژول mod_deflate در سرور آپاچی فعال باشد. اگر از هاست اشتراکی استفاده میکنید، در اغلب موارد این ماژول به صورت پیشفرض فعاله.
اگر پس از افزودن کد و ذخیره فایل .htaccess تغییرات اعمال نشد، کش مرورگر و کش سایت (مثل کش افزونههای وردپرس) رو پاک کنید.
جمع بندی نهایی
ارور Specify a Vary: Accept-Encoding header در GTmetrix نشونهی غیرفعال بودن فشردهسازی Gzip یا عدم ارسال صحیح هدرهای مرتبط در پاسخهای HTTP هست. با فعالسازی این قابلیت در سرور (چه Apache و چه NGINX)، میتونید سرعت بارگذاری سایت، مصرف پهنای باند و در نهایت رضایت کاربران و رتبه سئو رو به شکل محسوسی افزایش بدید.
در صورتی که از سیستمهای مدیریت محتوا مثل وردپرس استفاده میکنید و به تنظیمات سرور دسترسی ندارید، میتونید از افزونههایی مثل WP Rocket یا W3 Total Cache برای فعالسازی Gzip استفاده کنید.