در این جلسه قصد داریم درباره مشکل Enable gzip compression در PageSpeed گوگل و همینطور ارور Compress components with gzip در YSlow یاهوصحبت کنیم و اول gzip تعریف خواهیم کرد و اینکه gzip چیست و چه تاثیری در سرعت سایت دارد.
فقط توجه داشته باشید هر دو خطای Enable gzip compression و Compress components with gzip یک منظور را میرساند فقط خطای اولی مربوط به گوگل است و دومی مربوط به یاهو میباشد، حل یکی از این خطاها باعث حل دیگر خطا هم میشود.
اگر صاحب سایتی باشید قطعا افزایش سرعت لود سایت برای شما اهمیت فراوانی خواهد داشت و اینکه چه مدت زمانی بارگذاری صفحات سایت شما به طول میانجامد جز فاکتورهای مهم یک مدیر سایت برای بهبود صفحاتش است. پس حتما اطلاع دارید که بالا بودن سرعت سایت چه میزان در نرخ دفع کاربری (Bounce rate چیست) ، تجربه کاربری (User Experience) و همینطور در رتبه دهی موتورهای جستجو که یکی از عوامل مهم است، تاثیر دارد.
از انجایی که از ملاکهای اساسی گوگل برای رتبه بندی سرعت لودینگ صفحات میباشد بالا بردن سرعت سایتها، از دغدغههای اصلی وبستران بوده و هست. همچنین تجربه نشان میدهد که کاربران صفحاتی را که بالای ۱۰ ثانیه برای باز شدنشان به طول میانجامد را بسته و به سراغ سایت دیگری میروند و این یعنی بالا رفتن Bounce rate. حال یکی از اقداماتی که میتوان در راستای افزایش سرعت سایت تاثیر فراوانی دارد فعال سازی Gzip در سمت سرور میباشد و باعث رفع ارور Enable gzip compression و همچنین بهبود TTFB نیز میشود.
تمام مرورگرهای مدرن و مرسوم امروزی از تابع gzip پشتیبانی میکنند و هم به شکل اتوماتیک درخواست HTTP به سمت سرور برای GZIP compression ارسال میکنند. در ادامه به همراه عکس بیشتر به این موضوع تمرکز میکنیم. لیست مرورگرهای معروف که از این تابع پشتیبانی میکنند:
حال به بررسی اینکه gzip چیست میپردازیم، حتما شما در سیستم خود با فایلهای zip کار کردید و میدانید که هدف اصلی این فایلها فشرده سازی اطلاعات موجود درونشان میباشد تا جدا از اینکه حجم کمتری در سیستم شما بگیرد انتقال آن هم سریعتر و راحتتر خواهد بود،حال عمل Gzip همین کار را برای فایلهایی که در طراحی سایت(طراحی سایت شرکتی، طراحی سایت فروشگاهی) موجود است انجام میدهد.
فایلهای با حجم کمتر به بازدیدکنندگان شما اجازه میدهد تا فایلهای طراحی سایت را سریعتر دریافت کنند و در نتیجه سایت شما را سریعتر مشاهده کنند. البته باید اشاره کنیم که تابع Gzip هر فایلی در سمت سرور را فشرده سازی نمیکند، فشرده سازی صرفا منوط به فایلهای HTML ، فایلهای استایلدهی (stylesheets) و جاوااسکریپت (JavaScript) میباشد و شامل تصاویر و بقیه فایلهای موجود دیگر نیست.
Gzip باعث کاهش حجم سایت و افزایش سرعت لود سایت میشود، در واقع این تابع میتواند حجم فایلهای ذکر شده را بیش از ۷۰ درصد کاهش بدهد. این تابع دو مولفه اصلی را در سایت GTmetrix کاهش میدهد یکی Page Load Time و دیگری Total Page Size میباشد.
Ilya Grigorik در گوگل میگوید:
فشرده سازی یک فرایند رمزگذاری اطلاعات با استفاده از بیتهای (bits) کمتر است.
بعد از آنکه متوجه شدید gzip چیست به نحوه کارکرد این تابع میپردازیم،وقتی کاربری توسط مرورگر خود قصد دارد وارد یک سایتی شود، مرورگر اول یک درخواست از سمت header یعنی “content-encoding: gzip” ارسال میکند تا ببیند آیا جواب این درخواست مثبت است یا منفی. اگر درخواست از سمت سرور شناسایی شد و مثبت بود، سرور فایلهای فشرده شده را به مرورگر ارسال میکند، درغیر این صورت سرور فایلهای غیر فشرده و سنگین را به مرورگر ارسال میکند که در بیشتر وقتها همراه با ارورهای مختلف همراه خواهد بود.
توجه داشته باشید کدهایی که توسط برنامهنویسهای وب نوشته شده است برای اینکه چشم برنامه نویس کدها را به راحتی درک کنند، باید با یک ترکیب خاص و منظمی کدنویسی را انجام دهند تا در ویرایشها و رفع خطاها در آینده مشکلی نداشته باشند.
ولی موتورهای جستجو همانند گوگل و مرورگرها همانند کروم و فایرفاکس، نیازی به کدنویسی زیبا و فصای خالی بین کدها ندارند، و به راحتی میتوانند آنها را تجزیه و همه آنها در یک بلوک یا خط بخوانند، برای همین در بهینه سازی سایت فایلها پیشنهاد میشود که آنها را minify و combine کنید. و جدا از رفع خیلی از خطاها باعث برطرف شدن مشکل Enable gzip compression میشود.
جهت تست فشرده سازی gzip میتوانید از ابزارهای آنلاین زیر استفاده نمایید:
برای مقایسه فایل قبل و بعد از فشرده سازی طبق عکس زیر روی ایکون اشاره شده کلیک کنید و در ستون size میتوانید به مقایسه فایلها بپردازید.
ما در اینجا سعی کردیم در تمام وب سرورها و CMS ها روشهای مختلف فعال سازی gzip را بیان کنیم، فعال سازی به روشهای مختلف انجام میشود و شما سعی کنید مناسبترین روش را برای خود انتخاب کرده و اعمال کنید، و لازم نیست ۲ یا چند روش را بر روی سایت اعمال کنید بعضی از دوستان این تصور را دارند که اگر تابع gzip را چندین بار فعال کنند سایت آنها چندین بار فشرده سازی خواهد شد و برای سئو سایت مناسب خواهد بود، ولی این دیدگاه اشتباه است و ممکن است تداخل به وجود امده باعث از بین رفتن ماهیت تابع gzip شود.
راحتترین راه برای فشرده سازی فایلها و فعال کردن gzip استفاده از پلاگینهای کش که از این قابلیت پشتیبانی میکنند. پلاگینهایی مانند WP Rocket و W3 Total Cache از این قبیل افزونه ها هستند که یک سری کد در فایل .htaccess به شکل اتومایتک بعد از فعال سازی آنها قرار میدهند. البته باید توجه داشته باشید که دسترسی لازم برای نوشتن در فایل .htaccess به این افزونهها بدهید.
اگر شما از cms جوملا (joomla) برای سایت خود استفاده میکنید برای فعال کردن Gzip وارد مدیریت جوملا شوید سپس در منوی سایت – تنظیمات کلی وارد شوید و در تب سرور گزینه فشرده سازی Gzip را روی بلی قرار داده و سیو نمایید.
برای فعال سازی gzip در سی پنل ابتدا وارد cPanel شوید، سپس در بخش Software and Services روی Optimize Website کلیک کنید. پس از ورود همانطور که مشاهده میکنید دو گزینه compress all content و compress the specified MIME types و یک فضای متنی جهت مشخص کردن MIME Type های انتخابی وجود دارد میتوانید گزینه مد نظر خود را انتخاب نموده و روی گزینه Update Settings کلیک کنید تا فشرده سازی محتویات سایت انجام شود. با انتخاب گزینه compress all content تمامی فایل های شما فشرده میشود و با انتخاب compress the specifiedMIME types فایلهایی که MIME های آنها را مشخص نموده اید زیپ میشود .
ممکن است قصد نداشته باشید در افزونهها برای فعال سازی gzip استفاده کنید یا CMS دیگری دارید راه دوم یا راه دستی برای فعال سازی این تابع وجود دارد استفاده از سرور سایت خودتان است و اگر Apache داشته باشید شما میتوانید کد زیر را به فایل .htaccess وارد کرده و سیو کنید. فایل .htaccess در پوشه اصلی سایت یا همان public_html موجود دارد، اگر چنین فایلی وجود ندارد ابتدا روی setting سمت راست بالا کلیک کرده و گزینه Show Hidden Files را فعال کنید اگر فایل .htaccess نمایان شد که هیچ ولی اگر مشاهده نکردید به این معنی است که هنوز فایل .htaccess ساخته نشده است و خود میتوانید به شکل دستی این فایل با دقیقا با نام .htaccess بسازید و کدهای زیر را در آن قرار دهید.
اگر وب سرور شما NGINX یا به عبارتی انجین ایکس باشد میتوانید از دستورات این مقاله برای فعال سازی تابع gzip استفاده کنید، باید وارد دایرکتوری /etc/nginx/nginx.conf شده و یک سری تغییرات ساده و جزئی را ایجاد نمایید.
ممکن است سایت شما در ویندوز سرور های شرکت مایکروسافت میزبانی شود که روند فعال سازی تابع gzip کمی متفاوت خواهد بود، ابتدا باید بدانید که جهت فشرده سازی یا compression داخل ویندوز سرور باید ۴ مرحله را طی کنید، که ۳ مرحله اول همانند هم هستند، باید در ابتدا مطمئن باشید که ادمین سرور در زمان نصب ویندوز سرور در server manager و تب Role Services بخش Web Server رفته و در ادامه وارد Performance شده و گزینههای Static Content Compression و Dynamic Content Compression را تیک زده باشد.
بعد از اینکه مطمئن شدید این گزینه توسط ادمین سرور فعال است (جهت اطمینان میتوانید تیکت ارسال کنید) باید وارد IIS سرور خود شده در قسمت Compression دوباره ۲ گزینه که در بالا اشاره شده است را فعال کنید.
بعد از آن سایت خود را در کنترل پنلی که دارید، مثلا همانند SolidCP انتخاب کرده و بسته به کنترل پنل باید دنبال گزینه های Enable Static Content Compression و همینطور Enable Dynamic Content Compression باشد و سپس فعال کنید.
و سپس کدهای زیر را در Web.Config اضافه کنید:
توجه داشته باشید که این موارد بالا کاملا بستگی به نوع تنظیمات وب سرور شما توسط ادمین دارد و ممکن است خیلی از مراحل بالا فعال باشد و حتی کد وجود داشته باشید و صرفا نیاز باشید که در کنترل پنلی که ارائه دهندهگان سرور به شما میدهند در آنجا فعال کنید. ولی قبل از هر تغییری بک آپ گیری را فراموش نکنید.