۴ تکنیک جدید برای افزایش کارایی بافر کردن با 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');
?>

<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 با حذف فضاهای خالی

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

در همین رابطه :   16 سایت برتر آموزش آنلاین برنامه نویسی (بخش دوم)

function ob_postprocess($buffer)
{
	$buffer = trim(preg_replace('/\s+/', ' ', $buffer));
	return $buffer;
}

۲.فشرده سازی 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;
}

۳.اضافه کردن 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;
}

۴.انکود کردن کاراکترها

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;
}
دسته بندی : PHP

9 نظر

  1. منون از مطلب مفیدتون. فقط یک مشکلی اینجا هست که اگر از “//” برای کامنت کردن در قسمت های جاوا اسکریپت صفحه استفاده کرده باشی . کد های بعد از اون دیگه اجرا نمیشه.

  2. بسیار جالب و خواندنی منبع رو هم می گفید بد نبود ولی در دات نت ما بافر نداریم ولی بجاش می گیم اطلاعات رو باید کش کرد ( cache)

    1. ممنون.ولی فکر کنم کش شما با بافر ما فرق داره دوست من 🙂
      اگر نحوه کش در asp.net رو هم بفرمایید،ما حتما منتشر می کنیم

      موفقیت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *