در این چندوقته که بیشتر و دقیق تر مبحث طراحی رابط های کاربری، رضایت مشتری و به طور کلی مباحث مارکتینگ در فضای دیجیتال رو دنبال می کنم، واقعاً درک کردم که قیمت بالای هزینه اینترنت یکی از دافعه های مهم برای جذب عموم افراد به این تیپ فضاهاست.
این که بخوام از سیاست های ممکلت انتقاد کنیم، کار بی فایده ای به نظر میرسه. بنابراین دنبال راهکارهایی گشتم که بشه گشت و گذار توی فضای مجازی رو با حداقل هزینه ممکن کرد.
یکی از این راهکارها، بهینه سازی و فشرده سازی کدهای ارسالی از سرور به سمت درخواست کننده یا کلاینت هست. این که شکا بتونی برای اینترنت موبایلی که کیلوبایتی محاسبه میشه، یک فایل 300kbرو به کلاینت 10kb برسونی، اگه معجزه نباشه، مطمئن باشید که حس خوبی برای بازگشت به صفحه کسب و کارتون به مشتری هاتون القا می کنید.
اما اندر مزایای فشرده سازی:
- با کاهش حجم داده انتقالی از سمت سرور، پهنای باند شما کمتر مصرف می شود.
- یکی از معیارهای گوگل برای رتبه دهی به سایت شما، استفاده از امکانات فشرده سازی سمت سرور شما هستش. یعنی اگر محتوای ارسالی از سمت شما، فشرده باشد، گوگل را بیشتر خوش آید.
- خود آقایون گوگل و یاهو هم ازین تکنولوژی به صورت فوق پیشرفته ای استفاده می کنن.
فشرده سازی به چه صورت؟
یکی از راه کارهای فشرده سازی محتوای ارسالی در سیستم های مبتنی بر آپاچی، استفاده از تکنولوژی gzip هست. یک تکنولوژی ساده، کاربردی و البته سریع برای این که بتونید با کانفیگ کردن یکسری چیزها در سرورتون، محتوای ارسالی به سمت مشتری رو فشرده تحویلش بدید که دعاتون کنه.
ساده ترین راهکار برای زیپ کردن محتوای ارسالی از سمت سرور قرار دادن همین یک خط کد در فایل های php هست.
<?php if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’)) ob_start(“ob_gzhandler”); else ob_start(); ?>
توضیح این کد هم این که با بررسی هدر ارسالی از سمت کلایت، تشخیص میده که گیرنده مرورگر درخواست کننده قابلیت دریافت محتوای فشرده داره یا خیر، که در صورت مثبت بودن، با فراخوانی دستور ob_start('ob_gzhandler') محتوای نهایی رو هنگام ارسال به مشتری، فشرده می کنه. اینجا لازمه که یادآوری کنم، مرورگرها در هدر ارسالی خودشون به سمت سرور، مقدار accept-encodding رو مقداری دهی می کنند و سرور با بررسی این مقدار متوجه میشه که آیا مرورگر کلاینت از فشرده سازی های gzip یا deflate پشتیبانی می کنه یا خیر.
راه دیگه ای هم وجود داره که مبتنی بر تنظیمات سرور و تنظیم فایل .htaccess هست. آپاچی دو گزینه برای فشرده سازی در اختیار شما قرار میده.
- mod_deflate: ساده و سر راست است و پیکربندی آن به سادگی قابل انجام است.
- mod_gzip: قوی اتر از mod_deflate است و به شما قابلیت فشرده سازی محتوای دینامیک را هم می دهد. ولی پیکربندیش پیچیده است.
نمونه زیر یک نمونه فعال سازی قابلیت فشرده سازی به همراه استفاده از قابلیت کشینگ فایل های استاتیک برای افزایش بهره وری و سرعت بارگذاری سایت هستش.
BEGIN Compress text files
<ifModule mod_deflate.c><filesMatch "\.(css|js|x?html?|php)$"> SetOutputFilter DEFLATE
</filesMatch></ifModule>
# END Compress text files
# BEGIN Expire headers
<ifModule 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>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "max-age=216000, private"
</filesMatch>
<filesMatch "\.(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>
Header unset ETag
</ifModule>
FileETag None
# END Turn ETags Off
# BEGIN Remove Last-Modified Header
<ifModule mod_headers.c>
Header unset Last-Modified
</ifModule>
# END Remove Last-Modified Header
نکته ای که یادآوری اون اینجا خالی از لطف نیست اینه که اگر شما هنوز کاربرانی رو که با مرورگرهای IE 5 به پایین کار می کنن رو مهم و با ارزش می دونید و دوست دارید که سایت شما برای اون ها هم قابل بازدید باشه، باید یادتون باشه که این دسته از گونه های ماقبل تاریخ مرورگرها امکان و قابلیت پشتیبانی از محتوای ارسالی فشرده شده را ندارند. این فاجعه رو به همه عموم کاربران فهیم تسلیت عرض می کنم!!! بنابراین شما مجبور هستید که علاوه بر محتوای فشرده شده در سایت خود، محتوای غیر فشرده آن را هم برای این دسته از موجودات نگه دارید. دیگه تصمیم با خودتون هستش!!!
نکته دیگه این که قبل از به کار گیری mod_gzip حتماً از نصب بودن این ماژول روی php مطمئن شید.
ازین ابزار اینترنتی هم می تونید برای بررسی قابلیت سرورتون جهت ارسال محتوای فشرده شده به سمت کلاینت مطمئن شید.
http://www.gidnetwork.com/tools/gzip-test.php
اما مهمترین عیبی که به این تکنولوژی وارد هست، فشاری هست که روی پردازنده ی سرور برای فشرده سازی محتوا میاره. بنابراین اگر سرور شما یک سرور اشتراکی هست، باید در مورد به کار گیری این سیستم یک مقدار بیشتر فکر کنید. در غیر این صورت، اصلاً در انتخاب این تکنولوژی ارزشمند شک نکنید و به فکر رتبه بالاتر خود در گوگل و دیگر موتورهای جستجو باشید.
بهترین رتبه در گوگل رو برای شما از خداوند متعال خواستارم.
با سپاس
پچاز