پیاده سازی یک سیستم کش ساده با چند خط پی اچ پی

توسط مجتبی بنائی - شنبه 07 آبان 1390 - گروه : روزنوشت - مشاهده : 0
برچسب‌ها: #تخصصی‌نرم‌افزار #تجربیات #تخصصی #سایت #وب

s: تجربیات | تخصصی | سایت | وب همانطور که میدانید صفحات وب داینامیک مانند صفحات نوشته شده با PHP و ASP با هر بار فراخوانی یکبار اجرا شده و نتیجه اجرا به بازدیدکننده سایت ارسال می شود. برای افزایش سرعت سایت ، معمولاً از سیستم کش یا حافظه نهان استفاده می شود. ایده اصلی این رهیافت هم این است که بعد از تبدیل صفحه به کد اچ تی ام ال یک کپی از آن جایی ذخیره کنیم تا با درخواست مجدد آن صفحه، به جای پردازش مجدد تنها صفحه آماده شده مرحله قبل را به کاربر نمایش دهیم. فقط باید حواسمان به بازه کش یا همان زمانی که بعد از آن صفحه دوباره باید پردازش شود، باشد چون ممکن است در آن فاصله مطلب جدیدی به صفحه اضافه شده باشد و ما نسخه قبلی صفحه را به کاربر ارسال کنیم. در هرصورت سیستمهای مدیریت محتوا به طور خودکار این قابلیت را دارند و کافیست آنرا فعال کنید اما اگر سیستمی را خودتان نوشته اید و یا مایلید با منطق پشت این رهیافت آشنا شوید، قطعه کدی را که برای این منظور نوشته شده است ، در اینجا با هم مرور می کنیم : 01.<?php 02.// تعیین نام و مسیر فایل کش تولیدی 03.$cachefile = 'cached-files/'.date('M-d-Y').'.php'; 04.// تعیین بازه زمانی کش به ثانیه - در این مثال 5 ساعت منظور شده است . 05.$cachetime = 18000; 06.// بررسی اینکه فایل کش این صفحه موجود است و زمان ایجاد آن از نسبت به زمان جاری از 5 ساعت کمتراست 07.if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { 08. include($cachefile); 09.exit; 10.} 11.// اگر فایل کش موجود نبود یا قدیمی بود صفحه را پردازش میکنیم. دستورزیر خروجی را بافر می کند 12.ob_start(); 13.?> 14. 15. کدهای اچ تی ام ال صفحه در این قسمت قرار می گیرند. 16. 17.<?php 18.// صفحه تولید شده در بافر را در فایل کش ذخیره می کنیم 19.$fp = fopen($cachefile, 'w'); 20.fwrite($fp, ob_get_contents()); 21.fclose($fp); 22.// finally send browser output 23.ob_end_flush(); 24.?>

نظرات