Gzip در طراحی سایت

  • تیر ۲۴, ۱۳۹۴

Gzip در طراحی سایت : Gzip یکی از روش های فشرده سازی صفحات وب سایت است . این روش که قادر است بین ۶۰-۸۰ درصد از حجم صفحات را کاهش دهد، سرعت لود شدن آن ها را بالا می برد و می تواند تا حدی کندی سرعت اینترنت را جبران نماید. همچنین با فشرده سازی صفحات وب ، علاوه بر اینکه تعداد صفحات بیشتری توسط کاربران و موتورهای جستجو مشاده می گردند ، در مصرف ماهیانه پهنای باند نیز صرفه جویی خواهد شد .
لازم به ذکر است که استفاده نادرست از Gzip در طراحی سایت می تواند تاثیر معکوس داشته باشد !

Gzip در طراحی سایت

روش های استفاده از Gzip در طراحی سایت

در ادامه به معرفی و بررسی برخی از راهکار های استفاده از Gzip در طراحی سایت خواهیم پرداخت، با اینتن همراه باشید..

فشرده سازی از طریق اضافه کردن gzip به php  

جهت استفاده از این راهکار ابتدا باید اکستنشن zlib  را روی php   نصب نمایید . به این ترتیب امکان فشرده سازی gzip به php  افزوده خواهد شد .
یک راه بسیار ساده جهت فشرده سازی صفحات سایت استفاده از گزینه output_compression است. اکستنشن zlib که روی php نصب کرده ایم ، امکان فعال کردن output_compression از طریق  php.ini یا htaccess و فشرده سازی خروجی فایل های php  را فراهم می نماید.
مزیت استفاده از این روش فشرده سازی آن است که اگر مرورگر ، از gzip   پشتیبانی کند ، خروجی تمام صفحات php  بدون آنکه در برنامه تغییری ایجاد شود فشرده خواهد شد .
استفاده از این روش فشرده سازی معایبی را نیز به همراه دارد . به عنوان مثال این روش تنها خروجی فایل های php  را فشرده می کند اما فایل های دیگر مانند html ، css و js فشرده نخواهند شد . بعلاوه در صورتی که از سرور ضعیف استفاده شود یا آنکه تعداد بازدید کنندگان سایت بالا برود ، بار پردازشی روی سرور به مقدار قابل توجهی افزایش خواهد یافت . چراکه در این روش امکان کش کردن خروجی به سمت سرور وجود ندارد ، بنابر این هر بار که صفحه ای بازخوانی می شود ، اطلاعات مستقیما باید از سرور خوانده شود و مجددا عملیات فشرده سازی روی آن صورت گیرد .

استفاده از ob_gzhandler

دومین روش استفاده از  Gzip در طراحی سایت ، استفاده از ob_gzhandler به عنوان output_handler  است که  مزایا و معایب راه اول را داراست.
 ob_gzhandler هم از طریق htaccess یا  php.ini و هم به عنوان callback برای ob_start در برنامه استفاده می گردد.

نحوه استفاده از ob_gzhandler در فایل  htaccess  به صورت زیر است :


php_flag output_buffering on
php_value output_handler ob_gzhandler

نحوه استفاده از ob_gzhandler به عنوان callback برایob_start  نیز به شکل زیر می باشد :

<?php
ob_start("ob_gzhandler"); // place this line of code at the start of your files
?>



یک نکته بسیار مهم آن است که در صورت استفاده از htaccess و یا php.ini هرگز نباید خروجی با انکدینگ gzip ارسال نمایید ، چرا که محتوای صفحه دوبار انکد خواهد شد .
همچنین گفته شد که gzip در طراحی سایت  قادر به فشرده سازی فایل های  html ، css و js نیست . پس برای فشرده سازی آن ها نیاز به کدی  داریم که نام یک فایل را دریافت کرده محتویات آن را بخواند و به خروجی بدهد. Php  کار فشرده سازی فایل مورد نظر را انجام خواهد داد .

همچنین نیاز است فایلی به نام compressor.php  در root سایت ایجاد کنیم تا نام فایلی که باید فشرده شود را از طریق GET دریافت کند. میتوان از قطعه کد زیر به این منظور استفاده نمود :

<?php
if (!preg_match('/\.(js|css|html|htm)$/i', $_GET[‘file’])) die('Access Denied');
if (!file_exists($_GET[‘file’])) die('File Not Found');
readfile($_GET[‘file’]);
?>


استفاده از این کد میتواند باعث بروز مشکلاتی مانند کاهش سرعت، افزایش مصرف پهنای باند و افزایش مصرف cpu  شود. برای رفع این مشکل نیاز به کدی داریم که تاریخ آخرین تغییرات فایل را به مرورگر بفرستد. در این صورت دفعات بعد که مرورگر فایل را از سرور درخواست کند ، تاریخ آخرین نسخه موجود در کش هم به سرور فرستاده می شود و این تاریخ با تاریخ فایل مقایسه می گردد و در صورت یکسان بودن ، مرورگر از همان نسخه موجود در کش استفاده می نماید.
از کدهای زیر برای این منظور استفاده می شود :

<?php
if (!preg_match('/\.(js|css|html|htm)$/i', $_GET[‘file’])) die('Access Denied');
if (!file_exists($_GET[‘file’])) die('File Not Found');
 
$mtimestr = gmdate("D, d M Y H:i:s", filemtime($_GET[‘file’])) . " GMT";
if (@$_SERVER[‘HTTP_IF_MODIFIED_SINCE’] == $mtimestr) {
header('HTTP/1.1 304 Not Modified');
die();
}
 
header("Last-Modified: " . $mtimestr);
header("Cache-Control: must-revalidate", false);
readfile($_GET[‘file’]);
?>


راه دیگری که برای فشرده سازی فایل های  html ، css  و js وجود دارد ، حذف فواصل اضافی و کامنت ها از میان کدهاست .
برای این کار باید تمام لینک هایی که در سایت به شکل فایل های css و js و html هست تغییر دهیم و به جای آن لینکی به فایل compressor.php  جایگزین کنیم . سپس نام فایل مورد نظر را هم به صورت پارامتر به آن ارسال نماییم .
برای آنکه نیازی به تغییر در کدهای سایت نباشد ، با استفاده از یک rewrite rule تمام request هایی که به فایل های css و js و html ارسال میشود را به فایل compressor.php می فرستیم.
در نتیجه محتوای فایلhtaccess  مشابه کدهای زیر خواهد شد :


php_flag zlib.output_compression on
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*\.(js|css|htm|html))$ compressor.php/?file=$1
</IfModule>


نحوه فعالسازی gzip در طراحی سایت با جوملا :

Gzip در طراحی سایت

برای فعال سازی gzip در طراحی سایت با جوملا  سه روش وجود دارد :
۱) روش اول ، فعالسازی gzip در طراحی سایت از طریق تنظیمات کلی جوملا است . بدین منظور ابتدا وارد بخش مدیریت وب سایت مورد نظر شده سپس در قسمت "سرور" گزینه "فشرده سازی gzip " را روی "بلی" قرار داده و تنظیمات را ذخیره می کنیم .
۲) دومین راه ، فعال سازی gzip  در طراحی سایت در کنترل پنل cPanel است . در این روش ابتدا باید وارد بخش کنترل پنل cPanel هاست خود شویم . سپس از تب Software/Services گزینه Optimize Website را انتخاب و بعد از آن گزینه Compress all content  را فعال کرده، تنظیمات را ذخیره کنیم .
۳) سومین و آخرین روش قرار دادن کدهای فعال کردن Gzip در فایل  htaccessدر روت هاست. اما قبل از آن باید نام فایل htaccess.txt را به htaccess. تغییر دهیم تا کدهای مربوطه به درستی کار کنند.

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

جهت فعالسازی gzip با اچ تی اکسس تنها کافی است که از فایل htaccess سایت مورد نظرتان بک آپ بگیرید و سپس کدهای زیر را در انتهای htaccess  کنید :


# BEGIN GZIP
 
<ifmodule mod_deflate.c>
 
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
 
</ifmodule>
 
# END GZIP


در پایان htaccess  را ذخیره کنید .

شرکت طراحی سایت و سئو سایت اینتن ارائه دهنده ی جدیدترین و بهترین راهکار ها در زمینه ساخت سایت و بهینه سازی سایت برای کسب و کار شما می باشد،

با اینتن بروز باشید…

 

مشاوره رایگان طراحی سایت

مشاوره طراحی سایت

در صورتی که به دنبال راه اندازی کسب و کار خود در دنیای اینترنت هستید . عدد 21 را به شماره 09107585955 پیامک نمایید یا در لینک زیر فرم درخواست مشاوره را پر نمایید تا مشاوران اینتن با شما در تماس باشند . با اینتن بروز باشید.

بدون نظر
 
(No Ratings Yet)
Loading...