sharktech
کاربر فعال
یک سیستم مدیریت محتوا (CMS) باید طوری برنامه نویسی شده باشد که از امکانات و منابع موجود کمترین استفاده را کرده و در عین حال بهترین بازده و نتیجه را داشته باشد.
یکی از مهمترین منابع و اصلی ترین آن در یک CMS, دیتابیس یا همان پایگاه داده می باشد که تمامی مشخصات, تنظیمات و محتوای یک CMS در آن ذخیره شده و در مواقع لزوم از دیتابیس استخراج شده و به نمایش در می آیند.
اما اگر قرار باشد که برای دانستن اطلاعات, مدام آنها را واکشی کرده و نمایش دهیم, بار محاسباتی زیادی را روی سرور وارد می کنیم و مهمتر آنکه سرعت لود شدن سایت نیز به صورت چشم گیری کاهش پیدا می کند.
البته این قضیه در سایت های کم ترافیک به چشم نمی آید اما در سایت های پربازدید این مسئله ممکن است باعث داون شدن سرور و سایت شود.
اما چگونه می توان یک CMS را طوری طراحی کرد که دچار چنین عواقبی نشده و در عین حال سرعت لود بیشتری را نیز داشته باشد ؟
جواب این سوال استفاده از سیستم کش (cache) در برنامه نویسی CMS می باشد. البته استفاده از سیستم کش تنها در برنامه نویسی وب کاربرد ندارد و در هر جایی که لازم باشد می توان از این سیستم بهره برد.
یک CMS از یک سری دستورات برای ذخیره, واکشی, تغییر و حذف اطلاعات دیتابیس تشکیل شده است که تمامی این رخ دادها توسط یک زبان برنامه نویسی تحت وب مانند : php و asp کنترل و تمامی این کارها بر روی یک دیتابیس اعمال می شود.
عملی که سیستم کش انجام می دهد واکشی و ذخیره قسمت مورد نظر اطلاعات موجود از دیتابیس در یک فایل متنی می باشد تا زمانی که تغییری در همان اطلاعات در پایگاه داده صورت پذیرد.
خوب در بخش اول توضیحاتی در مورد استفاده از سیستم کش در سیستم مدیریت محتوا خوندین و در این بخش وارد قسمت عملی کار میشیم و با کد ها و برنامه نویسی این سیستم آشنا می شیم.
اول از همه با کدی آشنا می شیم که اطلاعاتی رو که نیازمون هست و از دیتابیس استخراج می کنیم رو به صورت فایل متنی و با فرمت html ذخیره می کنه :
خوب کد نیاز به توضیح بیشتری نداره و توضیحاتش در کامنت ها هست.
و حالا به کدی می رسیم که وظیفه تشخیص وجود فایل کش رو بر عهده داره و در این تکه کد دو حالت پیش میاد :
۱- اگر فایل کش وجود داشت, محتوای ذخیره شده در آن فایل را نشان می دهد.
۲-اگر فایل کش وجود نداشت, کد مربوط به واکشی اطلاعات از دیتابیس و ذخیره آن در یک فایل را اجرا می نماید.
و کد نهایی که ترکیبی از هر دو کد می باشد :
شما می تونین با تغییر این قسمت از کد :
و عوض کردن “index.html” هر اسم دیگری به فایل کش خودتون بدین و حتی می تونین اون رو به صورت دینامیک نام گذاری کنین و چندین بار از این کد توی صفحه مورد نظر خودتون استفاده کنین.
امیدوارم که از این آموزش راضی باشید و از اون توی پروژه های خودتون استفاده کنید
منبع : ققنوس گرافیک
یکی از مهمترین منابع و اصلی ترین آن در یک CMS, دیتابیس یا همان پایگاه داده می باشد که تمامی مشخصات, تنظیمات و محتوای یک CMS در آن ذخیره شده و در مواقع لزوم از دیتابیس استخراج شده و به نمایش در می آیند.
اما اگر قرار باشد که برای دانستن اطلاعات, مدام آنها را واکشی کرده و نمایش دهیم, بار محاسباتی زیادی را روی سرور وارد می کنیم و مهمتر آنکه سرعت لود شدن سایت نیز به صورت چشم گیری کاهش پیدا می کند.
البته این قضیه در سایت های کم ترافیک به چشم نمی آید اما در سایت های پربازدید این مسئله ممکن است باعث داون شدن سرور و سایت شود.
اما چگونه می توان یک CMS را طوری طراحی کرد که دچار چنین عواقبی نشده و در عین حال سرعت لود بیشتری را نیز داشته باشد ؟
جواب این سوال استفاده از سیستم کش (cache) در برنامه نویسی CMS می باشد. البته استفاده از سیستم کش تنها در برنامه نویسی وب کاربرد ندارد و در هر جایی که لازم باشد می توان از این سیستم بهره برد.
یک CMS از یک سری دستورات برای ذخیره, واکشی, تغییر و حذف اطلاعات دیتابیس تشکیل شده است که تمامی این رخ دادها توسط یک زبان برنامه نویسی تحت وب مانند : php و asp کنترل و تمامی این کارها بر روی یک دیتابیس اعمال می شود.
عملی که سیستم کش انجام می دهد واکشی و ذخیره قسمت مورد نظر اطلاعات موجود از دیتابیس در یک فایل متنی می باشد تا زمانی که تغییری در همان اطلاعات در پایگاه داده صورت پذیرد.
خوب در بخش اول توضیحاتی در مورد استفاده از سیستم کش در سیستم مدیریت محتوا خوندین و در این بخش وارد قسمت عملی کار میشیم و با کد ها و برنامه نویسی این سیستم آشنا می شیم.
اول از همه با کدی آشنا می شیم که اطلاعاتی رو که نیازمون هست و از دیتابیس استخراج می کنیم رو به صورت فایل متنی و با فرمت html ذخیره می کنه :
PHP:
// شروع کش
ob_start();
// استخراج اطلاعاتی از دیتابیس
$query = mysql_query("select * from table ORDER BY id");
while ($row = mysql_fetch_array($query)) {
echo $row['id'].' | '.$row['content']. '<br />';
}
// ذخیره سازی اطلاعات در یک متغییر
$buffer = ob_get_contents();
// پایان ذخیره اطلاعات در کش
ob_end_flush();
// اطلاعات ذخیره شده در متغیر در یک فایل ذخیره می شود
$fp = fopen($file, "w");
fwrite($fp, $buffer);
fclose($fp);
و حالا به کدی می رسیم که وظیفه تشخیص وجود فایل کش رو بر عهده داره و در این تکه کد دو حالت پیش میاد :
۱- اگر فایل کش وجود داشت, محتوای ذخیره شده در آن فایل را نشان می دهد.
۲-اگر فایل کش وجود نداشت, کد مربوط به واکشی اطلاعات از دیتابیس و ذخیره آن در یک فایل را اجرا می نماید.
PHP:
// آدرس فولدر برای ذخیره فایل های کش
$cacheDir = dirname(__FILE__) . '/cache/';
$file = $cacheDir . 'index.html';
// یک دستور شرطی که وجود فایل را تشخیص می دهد
if (file_exists($file))
{
// خواندن محتوای فایل و نشان دادن آن در مرورگر
header("Content-Type: text/html");
readfile($file);
}
PHP:
// آدرس فولدر برای ذخیره فایل های کش
$cacheDir = dirname(__FILE__) . '/cache/';
$file = $cacheDir . 'index.html';
// یک دستور شرطی که وجود فایل را تشخیص می دهد
if (file_exists($file))
{
// خواندن محتوای فایل و نشان دادن آن در مرورگر
header("Content-Type: text/html");
readfile($file);
}
else
{
// شروع کش
ob_start();
// استخراج اطلاعاتی از دیتابیس
$query = mysql_query("select * from table ORDER BY id");
while ($row = mysql_fetch_array($query)) {
echo $row['id'].' | '.$row['content']. '<br />';
}
// ذخیره سازی اطلاعات در یک متغییر
$buffer = ob_get_contents();
// پایان ذخیره اطلاعات در کش
ob_end_flush();
// اطلاعات ذخیره شده در متغیر در یک فایل ذخیره می شود
$fp = fopen($file, "w");
fwrite($fp, $buffer);
fclose($fp);
}
PHP:
$file = $cacheDir . 'index.html';
امیدوارم که از این آموزش راضی باشید و از اون توی پروژه های خودتون استفاده کنید
منبع : ققنوس گرافیک