در این جلسه قصد داریم درباره مشکل Enable gzip compression در PageSpeed گوگل و همینطور ارور Compress components with gzip در YSlow یاهو صحبت کنیم و اول gzip تعریف خواهیم کرد و اینکه gzip چیست و چه تاثیری در سرعت سایت دارد.
فقط توجه داشته باشید هر دو خطای Enable gzip compression و Compress components with gzip یک منظور را میرساند فقط خطای اولی مربوط به گوگل است و دومی مربوط به یاهو میباشد، حل یکی از این خطاها باعث حل دیگر خطا هم میشود.
خلاصهی از خطا Enable gzip compression
اولویت: بالا
میزان سختی: راحت
میانگین امتیاز: 82%
فشرده سازی Gzip در افزایش سرعت سایت
اگر صاحب سایتی باشید قطعا افزایش سرعت لود سایت برای شما اهمیت فراوانی خواهد داشت و اینکه چه مدت زمانی بارگذاری صفحات سایت شما به طول میانجامد جز فاکتورهای مهم یک مدیر سایت برای بهبود صفحاتش است. پس حتما اطلاع دارید که بالا بودن سرعت سایت چه میزان در نرخ دفع کاربری (Bounce rate چیست) ، تجربه کاربری (User Experience) و همینطور در رتبه دهی موتورهای جستجو که یکی از عوامل مهم است، تاثیر دارد.
از انجایی که از ملاکهای اساسی گوگل برای رتبه بندی سرعت لودینگ صفحات میباشد بالا بردن سرعت سایتها، از دغدغههای اصلی وبستران بوده و هست. همچنین تجربه نشان میدهد که کاربران صفحاتی را که بالای ۱۰ ثانیه برای باز شدنشان به طول میانجامد را بسته و به سراغ سایت دیگری میروند و این یعنی بالا رفتن Bounce rate. حال یکی از اقداماتی که میتوان در راستای افزایش سرعت سایت تاثیر فراوانی دارد فعال سازی Gzip در سمت سرور میباشد و باعث رفع ارور Enable gzip compression و همچنین بهبود TTFB نیز میشود.
تمام مرورگرهای مدرن و مرسوم امروزی از تابع gzip پشتیبانی میکنند و هم به شکل اتوماتیک درخواست HTTP به سمت سرور برای GZIP compression ارسال میکنند. در ادامه به همراه عکس بیشتر به این موضوع تمرکز میکنیم. لیست مرورگرهای معروف که از این تابع پشتیبانی میکنند:
- Internet Explorer 5.5 در + July 2000 از فشرده سازی gzip پشتیبانی میکرد
- Opera 5+ در June 2000 از فشرده سازی gzip پشتیبانی میکرد
- Firefox 0.9.5+ در October 2001 از فشرده سازی gzip پشتیبانی میکرد
- Chrome به محض انتشار در سال ۲۰۰۸ از فشرده سازی gzip پشتیبانی میکرد
- Safari به محض انتشار در سال ۲۰۰۳ از فشرده سازی gzip پشتیبانی میکرد
Gzip چیست؟
حال به بررسی اینکه gzip چیست میپردازیم، حتما شما در سیستم خود با فایلهای zip کار کردید و میدانید که هدف اصلی این فایلها فشرده سازی اطلاعات موجود درونشان میباشد تا جدا از اینکه حجم کمتری در سیستم شما بگیرد انتقال آن هم سریعتر و راحتتر خواهد بود،حال عمل Gzip همین کار را برای فایلهایی که در سایت موجود است انجام میدهد.
فایلهای با حجم کمتر به بازدیدکنندگان شما اجازه میدهد تا فایلهای سایت را سریعتر دریافت کنند و در نتیجه سایت شما را سریعتر مشاهده کنند. البته باید اشاره کنیم که تابع Gzip هر فایلی در سمت سرور را فشرده سازی نمیکند، فشرده سازی صرفا منوط به فایلهای HTML ، فایلهای استایلدهی (stylesheets) و جاوااسکریپت (JavaScript) میباشد و شامل تصاویر و بقیه فایلهای موجود دیگر نیست.
Gzip باعث کاهش حجم سایت و افزایش سرعت لود سایت میشود، در واقع این تابع میتواند حجم فایلهای ذکر شده را بیش از ۷۰ درصد کاهش بدهد. این تابع دو مولفه اصلی را در سایت GTmetrix کاهش میدهد یکی Page Load Time و دیگری Total Page Size میباشد.
Ilya Grigorik در گوگل میگوید:
فشرده سازی یک فرایند رمزگذاری اطلاعات با استفاده از بیتهای (bits) کمتر است.
نحوه کار فشرده سازی Gzip در عمل
بعد از آنکه متوجه شدید gzip چیست به نحوه کارکرد این تابع میپردازیم،وقتی کاربری توسط مرورگر خود قصد دارد وارد یک سایتی شود، مرورگر اول یک درخواست از سمت header یعنی “content-encoding: gzip” ارسال میکند تا ببیند آیا جواب این درخواست مثبت است یا منفی. اگر درخواست از سمت سرور شناسایی شد و مثبت بود، سرور فایلهای فشرده شده را به مرورگر ارسال میکند، درغیر این صورت سرور فایلهای غیر فشرده و سنگین را به مرورگر ارسال میکند که در بیشتر وقتها همراه با ارورهای مختلف همراه خواهد بود.
توجه داشته باشید کدهایی که توسط برنامهنویسهای وب نوشته شده است برای اینکه چشم برنامه نویس کدها را به راحتی درک کنند، باید با یک ترکیب خاص و منظمی کدنویسی را انجام دهند تا در ویرایشها و رفع خطاها در آینده مشکلی نداشته باشند.
ولی موتورهای جستجو همانند گوگل و مرورگرها همانند کروم و فایرفاکس، نیازی به کدنویسی زیبا و فصای خالی بین کدها ندارند، و به راحتی میتوانند آنها را تجزیه و همه آنها در یک بلوک یا خط بخوانند، برای همین در بهینه سازی سایت فایلها پیشنهاد میشود که آنها را minify و combine کنید. و جدا از رفع خیلی از خطاها باعث برطرف شدن مشکل Enable gzip compression میشود.
چگونه GZIP Compression را چک کنیم فعال است؟
جهت تست فشرده سازی gzip میتوانید از ابزارهای آنلاین زیر استفاده نمایید:
- استفاده از Google PageSpeed Insights گوگل
میتوانید سایت خود را در Page Speed گوگل تست کنید و اگر gzip فعال نباشد پیغامی همانند زیر دریافت میکنید.
- استفاده از سایت GTmetrix
میتوانید در سایت جی تی متریکس نیز تست کنید و اگر با ارور Enable gzip compression مواجه شدید مبنی بر این است که تابع Gzip نیز در سمت سرور شما فعال نیست.
- استفاده از سایت Check GZIP compression tool
سایت ذکر شده هم میتواند بسیار مفید باشید و دقیقا به شما میگوید چه میزان از حجم سایت شما بعد از فعال سازی تابع gzip فشرده شده است.
- استفاده از مرورگر خود
شما به راحتی تمام میتوانید با استفاده از مرورگر خود از فعال بوندن Gzip در سرور مطمئن شوید و حتی به مقایسه تک تک فایلها قبل و بعد از فشرده سازی پردازید، ما در اینجا از کروم گوگل استفاده میکنیم ولی شما میتوانید از بقیه مرورگرها هم استفاده کنید چون نحوه کار اکثر آنها یکسان است. ابتدا سایت را باز کنید و بعد از کلیک راست کردن گزینه Inspect را انتخاب کنید و وارد سربرگ Network شده و دوباره سایت را رفرش کنید تا این اطلاعات این سربرگ نمایان شود.
برای مقایسه فایل قبل و بعد از فشرده سازی طبق عکس زیر روی ایکون اشاره شده کلیک کنید و در ستون size میتوانید به مقایسه فایلها بپردازید.
نحوه فعال سازی GZIP Compression
ما در اینجا سعی کردیم در تمام وب سرورها و CMS ها روشهای مختلف فعال سازی gzip را بیان کنیم، فعال سازی به روشهای مختلف انجام میشود و شما سعی کنید مناسبترین روش را برای خود انتخاب کرده و اعمال کنید، و لازم نیست ۲ یا چند روش را بر روی سایت اعمال کنید بعضی از دوستان این تصور را دارند که اگر تابع gzip را چندین بار فعال کنند سایت آنها چندین بار فشرده سازی خواهد شد و برای سئو سایت مناسب خواهد بود، ولی این دیدگاه اشتباه است و ممکن است تداخل به وجود امده باعث از بین رفتن ماهیت تابع gzip شود.
فعال سازی gzip در وردپرس
راحتترین راه برای فشرده سازی فایلها و فعال کردن gzip استفاده از پلاگینهای کش که از این قابلیت پشتیبانی میکنند. پلاگینهایی مانند WP Rocket و W3 Total Cache از این قبیل افزونه ها هستند که یک سری کد در فایل .htaccess به شکل اتومایتک بعد از فعال سازی آنها قرار میدهند. البته باید توجه داشته باشید که دسترسی لازم برای نوشتن در فایل .htaccess به این افزونهها بدهید.
فعال سازی gzip در جوملا
اگر شما از cms جوملا (joomla) برای سایت خود استفاده میکنید برای فعال کردن Gzip وارد مدیریت جوملا شوید سپس در منوی سایت – تنظیمات کلی وارد شوید و در تب سرور گزینه فشرده سازی Gzip را روی بلی قرار داده و سیو نمایید.
فعال کردن فشرده سازی gzip در cPanel
برای فعال سازی 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 در سرور آپاچی
ممکن است قصد نداشته باشید در افزونهها برای فعال سازی gzip استفاده کنید یا CMS دیگری دارید راه دوم یا راه دستی برای فعال سازی این تابع وجود دارد استفاده از سرور سایت خودتان است و اگر Apache داشته باشید شما میتوانید کد زیر را به فایل .htaccess وارد کرده و سیو کنید. فایل .htaccess در پوشه اصلی سایت یا همان public_html موجود دارد، اگر چنین فایلی وجود ندارد ابتدا روی setting سمت راست بالا کلیک کرده و گزینه Show Hidden Files را فعال کنید اگر فایل .htaccess نمایان شد که هیچ ولی اگر مشاهده نکردید به این معنی است که هنوز فایل .htaccess ساخته نشده است و خود میتوانید به شکل دستی این فایل با دقیقا با نام .htaccess بسازید و کدهای زیر را در آن قرار دهید.
<IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Rioving browser bugs for older browsers BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule>
فعال سازی gzip در وب سرور NGINX
اگر وب سرور شما NGINX یا به عبارتی انجین ایکس باشد میتوانید از دستورات این مقاله برای فعال سازی تابع gzip استفاده کنید، باید وارد دایرکتوری /etc/nginx/nginx.conf شده و یک سری تغییرات ساده و جزئی را ایجاد نمایید.
فعال سازی gzip در IIS ویندوز سرور
ممکن است سایت شما در ویندوز سرور های شرکت مایکروسافت میزبانی شود که روند فعال سازی تابع 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 اضافه کنید:<systi.webServer> <httpCompression directory="%SystiDrive%\inetpub\tip\IIS Tiporary Compressed Files"> <schie name="gzip" dll="%Windir%\systi32\inetsrv\gzip.dll" staticCompressionLevel="9" /> <dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="application/json; charset=utf-8" enabled="true" /> <add mimeType="application/atom+xml" enabled="true" /> <add mimeType="application/xaml+xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </dynamicTypes> <staticTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="application/json; charset=utf-8" enabled="true" /> <add mimeType="application/atom+xml" enabled="true" /> <add mimeType="application/xaml+xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true" /> </systi.webServer>
توجه داشته باشید که این موارد بالا کاملا بستگی به نوع تنظیمات وب سرور شما توسط ادمین دارد و ممکن است خیلی از مراحل بالا فعال باشد و حتی کد وجود داشته باشید و صرفا نیاز باشید که در کنترل پنلی که ارائه دهندهگان سرور به شما میدهند در آنجا فعال کنید. ولی قبل از هر تغییری بک آپ گیری را فراموش نکنید.
- اگر به دنبال مقالههای مناسب جهت بهینه سازی سرعت سایت خود در windows server هستید مقاله سایت tosinsoهم میتواند برای شما مفید باشد و همینطور مستندات شرکت مایکروسافت نظیر HTTP Compression of Dynamic Content و HTTP Compression of Static Content پیشنهاد میشود مطالعه شود.
- اگر شما به دقت این مقاله را مطالعه کرده باشید باید بدانید جی زیپ چیست و چگونه یک فایل را فشرده سازی میکند و همینطور با نحوه فعال سازی آن آشنایی کامل پیدا کردید. فعال سازی gzip کمک زیادی به بهینه سازی داخلی خواهد کرد پس سعی کنید به بهترین شکل ممکن این مشکل را حل کنید تا باعث کاهش سرعت سایت شما نشود.
مطلب قبلی : رفع خطای Enable Keep Alive