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

پرسیده شده
فعالیت 1068 روز پیش
دیده شده 389 بار
0

سلام

 

وقتی خروجی رو بافر می‌کنیم به جای اینکه خروجی به صورت تکه تکه به مرورگر ارسال بشه اول تو بافر ذخیره میشه و بعد یکجا ارسال میشه 

 

 سوالم اینه که خود این بافر کردن باعث کاهش سرعت لود سایت نمیشه؟ بلاخره اگه یک خروجی بزرگ رو به صورت تکه تکه ارسال کنیم سریع تر منتقل میشه تا بخواهیم اون خروجی بزرگ رو به صورت یکجا ارسال کنیم

فایل پیوست

علی.
علی.

6 خرداد 00

1
حذف شده

سلام.

بافر کردن اطلاعات برای کنترل خروجی استفاده میشه. برای مثال شما میخواهید قبل ازینکه هدرهایی مانند سشن و کوکی و ... به مرورگر کاربر ارسال نشده، هیچ دیتای Html ای فرستاده نشود.

یا اینکه در الگویی مانند MVC خروجی را در بافر نگه دارید تا در View مورد نظر اونرو flush کنید.

وقتی کاربردو مزایای Output Buffering رو متوجه بشیم، میتونیم در جای مناسب ازین قابلیت استفاده کنیم.

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

همچنین میتونین از PHP.ini مقدار ذخیره سازیشو تفییر بدید.

در کل حجم زیادی در بافر ذخیره نمیشه که در بهینه سازی و سرعت لود، تاثیر چشمگیری داشته باشه. حتی اگر حجم دیتا بیشتر از بافر باشد بازهم تکه تکه ارسال میشه(بافر سرریز شده). همچنین ارسال یکجای دیتا میتونه باعث افزایش لود صفحه باشه.

شما میتونید در یک مثال عملی از توابع microtime استفاده کنید و با بافر و بدون بافرو تست کنید و ببینید چند میکروثانیه اختلاف دارند.

فایل پیوست

محسن موحد

توسط

محسن موحد

6 خرداد 00

حذف شده
تشکر از پاسختون وقتی سایز بافر رو 4096 بزاریم و سریز کنه خروجی به سمت کاربر ارسال میشه و عملا نمیشه کنترلش کرد. درسته؟
علی.

6 خرداد 00

حذف شده
و وقتی سرریز کرد عملا اون مزایایی که Output Buffering در اختیار ما میزاره از دست میره.
علی.

6 خرداد 00

حذف شده
با flush کردن میتونیم کنترلش کنیم.
محسن موحد

8 خرداد 00