کاربری
کاربر گرامی به انجمن پشتیبانی پرستاشاپ - انجمن پرستاشاپ فارسی خوش آمدید . اگر این نخستین بازدید شما از سایت است , لطفا ثبت نام کنید:
تبلیغات در اینترنت Panypay

کاربران برچسب زده شده

نمایش نتایج: از 1 به 1 از 1

موضوع: Gzip چیست ؟

  1. #1

    http://up.vbiran.ir/images/rgk38wbh3cfxod62rhr2.gifhttp://up.vbiran.ir/images/rgk38wbh3cfxod62rhr2.gifhttp://up.vbiran.ir/images/rgk38wbh3cfxod62rhr2.gifhttp://up.vbiran.ir/images/rgk38wbh3cfxod62rhr2.gifhttp://up.vbiran.ir/images/rgk38wbh3cfxod62rhr2.gif
    مدیرکل سایت
    تاریخ عضویت
    شهر 1399
    محل سکونت
    زایان
    نوشته ها
    2,203
    سپــــــــاس
    147
    تشکر شده 631 بار در 531 ارسال
    یاد شده
    در 0 پست
    برچسب زده شده
    در 0 تاپیک

    Lightbulb Gzip چیست ؟

    GZIP چیست و چه کاربردی دارد؟

    یک الگوریتم فشرده سازی همانند Zip و SIT ایست.استفاده از این الگوریتم بسیار متدوال بوده و اگر شما با داده های غیر فشرده سر و کار دارید میتوانید انبوهی از فضاهای خالی را توسط Gzip کردن فایلهایتان بدست آورید.یک فایل تصویری پیش از این با ااستفاده از الگوریتم jpeg یا gif فشرده میشد و چنانکه به صورت یک داده طبیعی باشد،فشرده سازی دوباره با Gzip تاثیر چندانی در آن نخواهد داشت.

    ولی اگر شما یک فایل متن خام،یا حتی بهتر از آن مثل فایلهای xml یا html داشته باشید برای شما نتجیه ی مطلوبتری خواهد داشت.

    ولی بسیاری از مردم چنین فکر نمیکنند،چرا که فایلهای تصویری همیشه حجمی بیشتر از یک فایل html برای آنها دارد.اما فایلها html در حال رشد و بزرگ شدن توسط قالب صفحه های بسیار پیچیده و چیزهایی شبیه JavaScript هستند.فایلهای۴۰ کیلوبایت html بسیار معمولی و پیش پا افتاده هستند.حال وقتی شما در مورد چیستی فایل html فکر میکنید.بسیاری از این فایلها را شامل تگ های HTML که بسیار شبیه به هم بوده که بارها و بارها تکرار شده اند،میدانید.فشرده سازی HTML یکی از بهترین نمونه هایی از فشرده سازی است که میتوان نام برد.شما به راحتی میتوانید یک فایل ۴۰ کیلوبایتی را به پایین تر از ۳ کیلوبایت برسانید.

    اما این کار را چگونه تحقق بخشیم؟

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

    سه راه اصلی برای Gzip کردن کدهایتان دارید.دو مورد استفاده از mod_gzip می باشد.اکنون نیز روش mod_gzip کار میکند ولی باید صادقانه گفت که تنظیمات آن بسیار درد سر ساز است.زمانیکه آنرا پیکر بندی کردید میتوانید از آن دو روش را استفاده کنید.آپاچی هم میتواند به صورت خودکار تمامی فایلهای HTML را Gzip بدون فایلها قبلی.یا حتی شما میتوانید دو نسخه از هر صفحه را روی هاستتان ذخیره کنید.یک نسخه Gzip شده و یک نسخه عادی و با قاعده.

    برای مثال،شما در دایرکتوری Home دارید:

    Index.html

    و

    Index.gz

    مرورگرهایی که gzip را پشتیبانی میکنند فایل gz را دریافت میکنند و آنهایی که پشتیبانی نمیکنند از فایل html استفاده میکنند.در هر صورت شما mod_gzip را تنظیم میکنید.آپاچی به صورت خودکار فایلهای فشرده(gzip) را به مرورگرهایی که از آن پشیبانی میکنند، ارسال میکند و الا فایل html را خواهد فرستاد.

    ودر طرف کلاینت هیچ تغییری،تفاوتی در ارسال صفحات وجود ندارد.خروج از حالت فشردگی و لود به صورت کامل و از نگاه کاربر بسیار یکسان است و هیچ تفاوتی ندارد.

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

    این رو هم اضافه کنم که در حقیقت شما دارید یک پهنای باند قابل ملاحضه ای که هر ماه استفاده میکنید را ذخیره میکنید.و در حقیقت کاربران با اینترنت پر سرعت سایت شما رو با سرعت اندکی سریعتر و کاربران دایال آپ سایت شما را با سرعتی قابل ملاحظه سریعتر بارگذاری میکنند.

    بخش منفی کار کجاست؟

    پیکربندی.تنظیمات آن بسیار مشقت آور و درد سر ساز است.و اگر یک وب هاست داشته باشید.اغلی نمی تنوایند از mod_gzip استفاده کنید.و اگر سایتتون رو از یک سرور به سرور دیگری انتقال دهید باید دوباره از نو آنرا تنظیم کنید.اگر ممکن باشد.

    به همین دلیل من راه سوم رو به شما پیشنهاد میکنم که بسیار آسان است.با این روش شما فکر خواهید کرد کارهایی که انجام داده اید بسیار اشتباه بوده است.mod_gzip را فراموش کنید.در عوض از PHP استفاده کنید.

    فقط کافیست همه ی شما کد زیر را در بالای هر سند php قرار دهید و منتظر جادوی آن باشید.تمامی صفحات html شما فشرده خواهد شد.

    کد:

    <? ob_start("ob_gzhandler"); ?>
    این کار بسیار آسان است،فقط کافیست آنرا در شروع کدهای PHP تان قرار دهید.آن به صورت خودکار آنرا را برای مرورگرهایی که gzip را پشتیبانی میکنند فشرده میکند.در ضمن این شیوه قابل حمل است.همچنین بدون نیاز به پیکر بندی.شما می توانید سایتتان را به سرور دیگری منتقل کنید و تمامی سرور هایی که از php استفاده میکنند به صورت خودکار کد های شما رو فشرده میکنند.

    چگونه از صحت کار مطمئن شویم:

    Gzip به نرمی و آرامی کار میکند.شک نکنید و در تعجب باشید که “آیا آن کار میکند؟”من اینجا راهی ساده برای بررسی آن ارائه میکنم.تنها آزماینده Gzip سایت شماست.آدرس وبسایتتان را تایپ کنیید.

    شما متوانید به صورت دستی چک کنید.صفحات خود را در فایرفاکس بارگذاری کنید.حال از منوی Tools گزینه ی Page Info رو انتخاب کنید.حال در پنجره ی باز شده شما میتوانید مقدار سایز صفحه را ببیند.آن مقدارحجم واقعی است که بر روی اینترنت منتقل شده است.حال به منوی فایل رفته و صفحه خود را ذخیره کنید.و حال حجم فایل اچ تی ام ال ذخیره شده را بررسی کنید.اگر شما از gzip استفاده نمیکردید در پنجره ی باز شده حجمی معادل با صفحه ی ذخیره شده خواهید داشت.

    شما با این کار قدرت Gzip را خواهید دید.

    استفاده از gzip برای افزایش سرعت سایت
    سرعت لود شدن سایت برای وبمسترها از اهمیت ویژه ای برخورداره و با توجه به پایین بودن میانگین سرعت اینترنت در ایران این اهمیت مضاعف میشه.

    یکی از راهکارهای افزایش سرعت لود شدن سایت استفاده از فشرده سازی gzip هست که میتونه 60 الی 80 درصد حجم صفحات رو کاهش بده. البته استفاده ناصحیح از gzip میتونه باعث بروز مشکلات و یا حتی کند شدن سایت بشه. چگونگی استفاده موثر از این راهکار موضوعیست که در ادامه این بحث به اون خواهیم پرداخت.

    قبل از هر چیز از نصب بودن اکتنشن zlib روی php مطمئن بشید. این extension امکان استفاده از فشرده سازی gzip رو به php اضافه میکنه.

    ساده ترین راه برای فشرده سازی صفحات سایت استفاده از گزینه ی output_compression هست. اکستنشن zlib این امکان رو به شما میده که با فعال کردن output_compression از طریق php.ini و یا .htaccess خروجی فایل های php خود رو فشرده کنید. برای مثال یک فایل .htaccess روی سرور خود می سازید و خط زیر رو درون این فایل ذخیره میکنید:
    php_flag zlib.output_compression on

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

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

    نحوه استفاده از ob_gzhandler در فایل .htaccess :
    کد PHP:
    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 ارسال نمایید در غیر این صورت محتوای صفحه دو بار انکد شده و فاتحه سایتتان خوانده می شود.

    ضمنا همونطور که گفته شد از دو روش فوق فقط برای فشرده سازی خروجی فایلهای php میشه استفاده کرد و برای فشرده سازی فایلهای css و js و html باید خودمون دست به کار بشیم.

    ابتدا از روش اولی که گفته شد برای فشرده سازی خروجی php استفاده میکنیم.
    حالا برای فایلهای css و js و html باید کدی بنویسیم که نام یک فایل رو بگیره، محتوای فایل رو بخونه و به خروجی بفرسته. نیازی نیست ما فایل رو فشرده کنیم، بقیه کارها رو خود php انجام میده. برای این منظور فایلی به نام compressor.php در root سایت ایجاد می کنیم که نام فایلی که باید فشرده بشه رو از طریق GET دریافت کنه. ضمنا حتما باید پسوند فایل رو توی برناممون چک کنیم تا مشکل امنیتی پیش نیاد.

    کد PHP:
    <?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:
    <?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']);
    ?>
    در نهایت برای اینکه از بار پردازشی سرور کم کنیم میتونیم از کش سمت سرور هم استفاده کنیم. یعنی فایل های فشرده شده رو روی سرور ذخیره کنیم و مادامی که فایل تغییر نکرده از کش استفاده کنیم. البته این کار پیچیدگی های خاص خودش رو داره. چون در این صورت باید فایل رو خودمون فشرده کنیم و فشرده سازی خودکار رو غیر فعال کنیم. که در این صورت باید قبل از gzip کردن بررسی کنیم که آیا مرورگر از gzip پشتیبانی میکنه یا نه. شاید فکر کنید که این کار لزومی نداشته باشه، چون تقریبا اکثر مرورگر ها از gzip پشتیبانی میکنند، ولی اینطور نیست. به عنوان مثال IE به صورت پیش فرض در صورت استفاده از proxy از HTTP 1.0 استفاده میکنه و gzip رو پشتیبانی نمیکنه.

    و البته یک راه دیگه هم برای فشرده تر کردن فایل های js و css وجود داره و اون حذف کامنت ها و فاصله های اضافی از درون کد هست.

    در رابطه با این دو مورد آخر برای مشاهده نمونه کد میتونید به سورس jsmart compressor مراجعه کنید.

    خوب حالا برنامه ما آماده هست، باید تمام لینک هایی که در سایت به فایل های css و js و html هست رو تغییر بدیم و به جاش لینکی به فایل compressor.php قرار بدیم که نام فایل مورد نظر هم به صورت پارامتر بهش پاس شده باشه. کاره طاقت فرسایی هست و شاید غیر ممکن.

    برای اینکه نیاز به تغییر در کدهای فعلی سایتتون نداشته باشید از ماژول mod_rewrite آپاچی کمک می گیریم. یعنی با استفاده از یک rewrite rule تمام request هایی که به فایل های css و js و html ارسال میشه رو به فایل compressor.php می فرستیم.
    با این حساب محتوای فایل .htaccess یه چیزی شبیه به این میشه :

    کد PHP:
    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
    البته برای اینکه این rule با rule های دیگه ای که در برنامه ها برای تبدیل لینک های php به html استفاده میشه تداخل پیدا نکنه یک condition هم بهش اضافه کردیم تا فقط درمورد فایل هایی که وجود خارجی دارند این rule عمل کنه.

    حال مربوط به پرستاشاپ چیست؟

    خود پرستاشاپ به صورت پیش فرض از این امکان برخوردار است و نیاز به هیچ اعمال تنظیمی نیست و تنها باید هاست شما دارای این افزونه باشد تا سرعت لود سایتتان را چند برابر نمائید بدین صورت که مرورگر به صورت فایل فشرده GZIP از هاست محتویات را دریافت و در سیستم بازدید کننده به صورت خودکار مرورگر آن را استخراج کرده و به نمایش در خواهد اورد و بدین صورت به جای دریافت محتویات زیاد و سپس نمایش در مرورگر تمامی اطلاعات به این صورت فشرده به بازدید کننده ارسال میشود و سرعت لود سایت شما چندین برابر خواهد بود

    برای تست سایت شما و هاستتان در دارا بودن این افزونه می توانید از سایت زیر بهره ببرید
    [تنها کاربران انجمن می توانند لینک و عکس ها را مشاهده کنند تنها در 10 ثانیه ثبت نام کنید . ]

    هاست های پرقدرت ما دارای این افزونه و حتی افزونه های حرفه ای دیگری برای سازگاری با پرستاشاپ و بارگذاری هر چه سریعتر فروشگاه شما می باشد

    [تنها کاربران انجمن می توانند لینک و عکس ها را مشاهده کنند تنها در 10 ثانیه ثبت نام کنید . ]

    با سپاس - پرستاشاپ فارسی

    3 کاربر مقابل از New_Sra عزیز به خاطر این پست مفید تشکر کرده اند.



مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
درباره ما

سایت پشتیبانی پرستاشاپ فارسی خدمات رایگان خود را در سال 1392 با عنوان"انجمن پشتیبانی پرستاشاپ فارسی" در ایران آغاز نمود و از آن لحظه تا کنون همواره سعی در به کارگیری شیوه هایی نوین داشته و به عنوان اولین بومی کننده پرستاشاپ در ایران همواره در نشر و توسعه این فروشگاه ساز کوشا می باشد.

session بارگذاری مجدد کد امنیتی مندرج در تصویر را وارد کنید:
پیاده سازی ، پشتیبانی و تنظیم توسط :پرستاشاپ فارسی طراحی شده توسط رامین محمدی