نمایش نتایج 1 تا 2 از 2

نام تاپیک: ۴ تکنیک جدید برای افزایش کارایی بافر کردن با PHP

  1. #1
    کاربر دائمی آواتار soroush.r70
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    مازندران - آمل
    پست
    1,157

    ۴ تکنیک جدید برای افزایش کارایی بافر کردن با PHP

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

    البته قصد ما در این مطلب آموزش بافر در php نیست.بلکه می خواهیم ۴ تکنیک خوب و بدردبخور را معرفی کنیم که می توانید در عملیات بافر از آنها استفاده کنید.

    به صورت ساده عمل بافر در php به صورت زیر انجام می شود:
    <?php
    // start output buffering at the top of our script with this simple command
    // we've added "ob_postprocess" (our custom post processing function) as a parameter of ob_start
    ob_start('ob_postprocess');
    flush();
    ob_clean();
    ?>

    <html>
    <body>
    <p>Hello world!</p>
    </body>
    </html>

    <?php
    // end output buffering and send our HTML to the browser as a whole
    ob_end_flush();

    // ob_postprocess is our custom post processing function
    function ob_postprocess($buffer)
    {
    // do a fun quick change to our HTML before it is sent to the browser return $buffer;
    }
    ?>


    در مثال های بعدی از تابع ob_postprocess استفاده می کنیم.

    ۱.بهینه سازی HTML با حذف فضاهای خالی

    فضاهای خالی تکراری در هنگام نمایش در مرورگر،نادیده گرفته می شوند.اما کاربر نهایی شما مجبور است بایت به بایت آنها را دانلود کند.پس بهتر است آنها را پاک کنیم
    function ob_postprocess($buffer)
    {
    $buffer = trim(preg_replace('/\s+/', ' ', $buffer));
    return $buffer;
    }


    2.فشرده سازی HTML با gzip

    فشرده کردن خروجی بوسیله GZIP،توصیه اکید هر شخصی است که به کارایی وب سایت می اندیشد.
    function ob_postprocess($buffer)
    {
    // check if the browser accepts gzip encoding. Most do, but just in case
    if(strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)
    {
    $buffer = gzencode($buffer);
    header('Content-Encoding: gzip');
    }
    return $buffer;
    }


    3.اضافه کردن acronyms به HTML
    function ob_postprocess($buffer)
    {
    $acronyms['html'] = 'hypertext markup language';
    $acronyms['css'] = 'cascading style sheets';
    foreach($acronyms as $acronym => $meaning)
    {
    $buffer = preg_replace('/(\b' . $acronym . '\b)(?=[^>]*<)/i', '<acronym title="' . $meaning . '">\\1</acronym>', $buffer);
    }
    return $buffer;
    }


    4.انکود کردن کاراکترها
    function ob_postprocess($buffer)
    {
    // add styled double quotes
    $buffer = preg_replace('/"(?=[^>]*<)([^"]*)"(?=[^>]*<)/u', '“\\۱”', $buffer);
    // add styled apostrophes
    $buffer = preg_replace("/'(?=[^>]*<)/i", "’", $buffer);
    // add ellipses
    $buffer = str_replace('...', '…', $buffer);
    // encode ampersands
    $buffer = str_replace('&', ' & ', $buffer);
    return $buffer;
    }



    منبع : fotolia

  2. #2

    نقل قول: ۴ تکنیک جدید برای افزایش کارایی بافر کردن با PHP

    ضمن تشکر، فقط یک نکته که به ذهنم رسید اینکه در تکنیک 1، باید مراقب باشیم که فاصله های خالی داخل عبارات حذف نشن و فقط فواصل خالی اضافه رو حذف کنیم. مثلاً بعضی جاها ممکنه عبارت داخل تگ pre باشه و فواصل خالی تکراری عمداً گذاشته شده باشه.
    موفق باشید.

قوانین ایجاد تاپیک در تالار

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