بهینه سازی و افزایش سرعت لود شدن وب سایت توسط gzip

دسته بندی: سئو
زمان مطالعه: 5 دقیقه
۰۷ اسفند ۱۳۹۱

با وجود اینکه روزانه دسترسی به اینترنت و به طبع آن، سرعت آن نیز افزایش می‌یابد اما کماکان حجم صفحه تولیدی و مقدار عناصر استفاده شده در یک صفحه وب از ارکان مهم در طراحی یک سایت یا وبلاگ هستند؛ تا جایی که گوگل نیز یکی از فاکتور‌های پیج رنک خود را روی سرعت سایت‌ها معطوف کرده است.

برای کاهش حجم صفحات یک سایت روش‌های مختلفی وجود دارد. این روش‌ها از ابتدا باید توسط طراح سایت اعمال شوند و وی برای این منظور باید سعی کند با کد نویسی بهینه و استاندارد سازی شیوه‌نامه، تصاویر و کدهای نگارش شده، حجم سایت را تا میزان ممکن کاهش دهد. اما همواره روش‌های بهینه سازی دیگری نیز وجود دارند تا این کار را بیش از پیش عملی کنند و با این کار، علاوه بر آنکه کاربر سایت، با سرعت بیشتری صفحات را می‌بیند، میزان پهنای باند مصرفی خود سایت نیز به مقدار قابل توجهی کاهش می‌یابد.

شیوه کار GZIP

شاید خیلی‌ها هنوز ندانند که شیوه عمل ترفند GZIP و نحوه فشرده کردن صفحه به چه صورت انجام می‌شود. قبل از آنکه به سراغ معرفی این روش بپردازیم اجازه دهید تا با بیان یک مثال تصویری، نحوه انجام این کار را عنوان کنیم. هنگامی که فایل صفحه ای مانند https://7learn.com/index.php را از مرورگر درخواست می‌کنید، اطلاعاتی بین مرورگر و سایت مورد نظر رد و بدل می‌شود که به طور مختصر شبیه به تصویر بالا است:

۱. مرورگر: سلام! لطفا فایل index.php را به من بده ۲. سرور: خوب! اجازه بده تا فایل مورد نظر را پیدا کنم ۳. سرور: پیدا کردم! این کد پاسخ شماست (۱۰۰کیلوبایت ها!!!! OK). من فایل را برایتان می‌فرستم ۴. مرورگر: ۱۰۰ کیلوبایت؟!!! اوه چقدر زیاد! انتظار… انتظار… بسیار خوب، بارگزاری شد

این یک مکالمه بسیار ساده (و نه کامل) از آن چیزی است که هنگام درخواست مشاهده صفحه از سوی مرورگر شما با سرور سایت انجام می‌گیرد.

کجای کار مشکل دارد؟

درواقع مشکل کار همین حجم بالای محتوای صفحه است. کدها و تگ‌های به‌کار برده شده و تکراری موجود در صفحات، باعث سنگین شدن فایل آن‌ها می‌شود و این امر، بارگزاری صفحه را برای کاربران آن سایت به تاخیر می‌اندازد. خوب حالا سوال اینجاست که چطور می‌توان بدون دست بردن به کد و محتوای سایت، حجم صفحات را کاهش داد؟

تصور کنید اگر یک فایل فشرده شده (ZIP) از صفحه درخواستی کاربر را، به جای صفحه کدهای معمول سایت‌تان برای مرورگر وی بفرستید، می‌توانید تا حد زیادی از پهنای باند مصرفی سرورتان را کاهش داده و از طرفی سرعت دانلود صفحه مورد نظر را برای او به میزان چشم‌گیری افزایش دهید. این دقیقا همان کاری است که GZIP برای شما می‌کند!

1. مرورگر: سلام! می‌توانم index.php را دریافت کنم؟ اگر نسخه فشرده دارید لطفا آن‌را به من بدهید. ۲. سرور: اجازه بدهید فایل را پیدا کنم. بله، همین‌جاست! نسخه فشرده می‌خواهید؟ عالی است. ۳. سرور: من index.php را پیدا کردم (۱۰۰کیلوبایت ها!!!! OK).اما نگران نباش  فایل را فشرده و برای‌تان ارسال می‌کنم. ۴. مرورگر: فوق‌العاده است. فقط ۱۰ کیلوبایت! آن‌را از حالت فشرده خارج و به کاربر نمایش خواهم داد.

در واقع هنگامی که مرورگر به سرور سایت مراجعه می‌کند، با ارسال پیامی، از سرور درخواست ارسال فایل فشرده را می‌کند. اگر این پیام از سوی سرور پاسخ داده شد (به عبارتی دیگر، اگر سایت مورد نظر از قابلیت gzip یا deflate استفاده کند)، فایل مورد نظر برای مرورگر ارسال خواهد شد. در غیر این‌صورت، همان روال عادی بارگزاری صفحه طی می‌شود.

به‌طور ساده برای فشرده کردن فایل‌های متنی خود می‌توانید از ماژول deflate آپاچی استفاده کنید. برای این کار کافی است کدهای زیر را در فایل .htaccess سایت خود کپی نمایید

<ifModule mod_deflate.c="mod_deflate.c">
<filesMatch "\.(css|js|html|php)$"=""\.(css|js|html|php)$"">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>

این کد، فایل‌های CSS، JS، HTML، XHTML و PHP سایت شما را gzip می‌کند.

کد زیر نیز یک نمونه بسیار خوب برای فشرده سازی فایل‌های مورد اشاره روی سایت شما و نیز Cache کردن دیگر فایل‌های استاتیک است.

# BEGIN Compress text files
<ifModule mod_deflate.c="mod_deflate.c">
<filesMatch "\.(css|js|x?html?|php)$"=""\.(css|js|x?html?|php)$"">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>

# END Compress text files
# BEGIN Expire headers
<ifModule mod_expires.c="mod_expires.c">
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>

# END Expire headers
# BEGIN Cache-Control Headers
<ifModule mod_headers.c="mod_headers.c">
<filesMatch "\.(ico|jpe?g|png|gif|swf)$"=""\.(ico|jpe?g|png|gif|swf)$"">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>

<filesMatch "\.(css)$"=""\.(css)$"">
Header set Cache-Control "max-age=604800, public"
</filesMatch>

<filesMatch "\.(js)$"=""\.(js)$"">
Header set Cache-Control "max-age=216000, private"
</filesMatch>
<filesMatch "\.(x?html?|php)$"=""\.(x?html?|php)$"">
Header set Cache-Control "max-age=600, private, must-revalidate"
</filesMatch>
</ifModule>

# END Cache-Control Headers
# BEGIN Turn ETags Off
<ifModule mod_headers.c="mod_headers.c">
Header unset ETag
</ifModule>
FileETag None

# END Turn ETags Off
<ifModule mod_headers.c="mod_headers.c">
Header set Connection keep-alive
</ifModule>

<IfModule mod_headers.c="mod_headers.c">
<FilesMatch "\.(js|css|xml|gz)$"=""\.(js|css|xml|gz)$"">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>

# BEGIN Remove Last-Modified Header
<ifModule mod_headers.c="mod_headers.c">
Header unset Last-Modified
</ifModule>

# END Remove Last-Modified Header

با امتحان کردن این روش خواهید دید که تا چه اندازه، سرعت بارگزاری صفحات شما افزایش می‌یابد. برای بررسی صحت عملکرد gzip سایت خود نیز می‌توانید از این سیستم آنلاین استفاده کنید.در تصویر زیر وب سایت 7learn توسط این سایت تست شده که می‌توانید جزئیات مربوطه را بر روی تصویر مشاهده کنید.

همانطور که در تصویر می‌بینید حجم واقعی صفحه 94328 بایت هستش که بعد از فشرده سازی به 18095 کاهش پیدا کرده یعنی چیزی حدود 80 درصد کاهش حجم... خیلی جالبه نه؟ حالا با محاسبات زیر جالب‌تر هم میشه:

حالا من می‌خواهم سرعت لود شدن وب سایت 7learn رو قبل و بعد از فشرده سازی براتون محاسبه کنم تا بیشتر فواید gzip رو درک کنید.

ابتدا فرض میکنیم که کاربر ما توسط سرویسی با سرعت (56kbps) به اینترنت متصل است:

تبدیل حجم واقعی صفحه به کیلو بایت:

94328/1024=92kbytes

تبدیل حجم بعد از فشرده سازی به کیلو بایت:

18095/1024=17kbytes

حالا خودتون قضاوت کنید سرعت کدام حالت وب سایت برای لود شدن بیشتره؟ آیا تمام کاربرانتون از اینترنت پر سرعت استفاده می‌کنند؟ قطعا پاسخ شما منفی هستش  ...

این یکی از راه کارهای اساسی در زمینه بهینه سازی و سئو یک وب سایت می‌باشد که باید مد نظر گرفته شود.

منبع : وبلاگینا

امیدوارم که این مطلب مورد توجه شما واقع شده باشد.

موفق باشید...

چه امتیازی به این مقاله می دید؟
نویسنده وحید صالحی
علاقمند به طراحی و برنامه نویسی وب هستم و چند سالی میشه که در این زمینه فعالیت می کنم. (ایمیل من: @) وب سایت من:

نظرات کاربران

حامد

با سلام
چگونه می توان Specify a Vary: Accept-Encoding header را افزایش داد؟
با تشکر

صابر

تشکر فراوان با پاسخگوتون ممنون

صابر

با سلام
من اینو اپلود کردم اما وقتی
http://www.gidnetwork.com/tools/gzip-test.php
میزنم
Unknown Error.
میاره
هاست من رایگان هست
از 000webhost.com گرفتم

کیوان علی محمدی

این هاست های رایگان همشون مشکل اساسی دارن.

شاهین

عالیه!
تشکر از کدها 🙂

mohammad

الان همین کارو کردم . وقتی که این آدرس رو تایپ میکنم>>> www.2fani.ir
این نوشته میاد Unknown Error.
وقتی که این آدرس رو میزنمو>>>> http://2fani.ir
همون no و 0% میاد
میشه راهنمایی کنید ؟ 🙁

mohammad

این محتویات فایل htaccess سایت منه . میشه ویرایشش کنیو و با اون کدا بهم بدید ؟ مرسی

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

وحید صالحی

نیاز به ویرایش نیست همون کدها در زیر کدهای بالا پیست کن همین…

mohammad

نه تو روت سایت هست . سی پنل استفاده میکنم اما فک کنم فایلش هیدن باشه

mohammad

ببخشید من اون کد ها رو به اون فایل اضافه کردم اما وقتی توی سایت آنالیز میکنم چیزی نمیاد . اینم نوشته های آنالیز :
Web page compressed? No
Compression type? none
Size, Markup (bytes) 88,816
Size, Compressed (bytes) 0
Compression % 0.0

وحید صالحی

فایل htaccess در روت سایتت بود یا خودت ایجاد کردی؟

onlooker

سلام
ممنون از اینکه جواب دادید..

وحید صالحی

خواهش می کنم…

onlooker

سلام
خسته نباشید
میشه کمکم کنید تا سرعت لود شدن وبلاگم رو ببرم بالا؟؟
من از حرفای بالا راستش سر در نیاووردم..
کمکم کنید 😥

وحید صالحی

برای وبلاگ نمیتونید این کار رو انجام بدید برای این کار شما نیاز به هاست دارید…برای افزایش سرعت وبلاگ بهترین کار رسیدگی به سئو قالب وبلاگ هستش…

حسین

سلام مهندس صالحی عزیز
مشکلی دارم که مدتهاست درگیرشم انشالله که بتونید راهنماییم کنید, البته از لحاظ وقت

من از افزونه فایرباگ (فایرفاکس) برای شناخت عناصر استفاده میکنم و فقط میتونم المانهایی رو که میخوام ویرایش بدم براحتی در فایلهای سی اس اس با مسیری که نشون میده پیدا کنم, اما مثلاً اگر بخوام متنی رو در اچ تی ام ال ویرایش کنم نمیتونم در فایرباگ مسیر فایل پی اچ پی رو پیدا کنم, نمیدونم تونستم منظورمو برسونم یا نه ؟

ممنون میشم اگه راهنمایی کنید
البته هر چی گشتم تماس با شما را پیدانکردم مجبور شدم اینجا مطرح کنم, میتونید به ایمیلم جواب بفرستید

وحید صالحی

سلام
دوست عزیز زبان های مثل phpو تکنولوژی asp زبان های سرور ساید هستند یعنی بعد از درخواست کاربر کدهای مربرطه در سرور پردازش شده و بصورت کد های html برای شما در مرورگر به نمایش در می آید بخاط همینه که شما کدهای php رو نمیتونید ببینید و پیدا کنید برای مثال اگه شما سورس سایت ما رو هم با راست کلیک و انتخاب گزینه view page source مشاهده کنید با تعداد زیادی تگ html و script مواجه میشید و در حالی که خبری از کدهای php نیست و یکی از دلایل آن بالا بردن امنیت هست…
موفق باشید…

حسین

ممنون توضیح بسیار جامع و مفیدی بود
اما وحید جان آخه هیچ راهی واسه منه آماتور نیست بتونم هر جا مثلاً تو پنل ادمین ویرایشی داشته باشم یا قسمتی رو بخوام ترجمه کنم یا…..؟
خب وقتی مشکلی ایرادی چیزی میبینم میخوام یراست برم سراغ فایلش که دیگه هی نگردم تو فایلای پی اچ پی یک یکی بازشون کنم

وحید صالحی

اگر فایل هات روی سرور باشه توسط ابزار firebug نمیشه دوست عزیز باید از کامنت گذاری در فایل هات استفاده کنی تا توسط اون ها بتونی به راحتی در محیطی که کد میزنی بهشون دسترسی داشته باشی…

لقمان آوند

بله . این افزونه کدهای زیادی رو در این فایل میزاره و اگه خوب تنظیماتش رو ست کردید همه ی کدهای اضافه شده رو بزارید …

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :