PDA

View Full Version : راهنمایی در مورد سیستم کش



shadecute
سه شنبه 30 اردیبهشت 1393, 14:02 عصر
سلام
من بارها خوندم که Yii سیستم کش فوق العاده ای داره
تو مستندات (http://www.yiiframework.com/doc/guide/1.1/en/caching.overview)کمی مرور کردم
یکم پیچیده بود یه عالمه روش مختلفه که من نمی دونم الان از کدوم استفاده کنم من یه سایت ساده با Yii درست کردم کامنت میگیره و بازدید هم زیاد میشه . خب چون کامنت و بازدید داره پس نمی تونم از فول کش استفاده کنم .
از چه نوع کشی باید استفاده کنم ممنون میشم راهنمایی کنید کل صفحه به غیر از بازدید صفحه و کامنت ها کش بشه

MMSHFE
سه شنبه 30 اردیبهشت 1393, 15:38 عصر
میتونید از دیتابیس کش استفاده کنید. برای مثال، یک کوئری ساده بزنید (SELECT COUNT) ببینید تعداد کامنتهای یک پست تغییر کرده یا نه و این رو بعنوان Dependency برای Expire شدن کش تعریف کنید. با این قابلیت، میتونید کامنتهای هر پست رو کش کنید که هربار از دیتابیس خونده نشه و هربار کامنت جدیدی اضافه بشه، کش حذف میشه و دوباره اطلاعات رو کش میکنه. کامنت هم که چیزی نیست که بخواد ویرایش بشه که مدام لازم باشه دستی کش رو پاک کنید (البته اگه مدیر خواست ویرایش کنه، میتونید کش مربوطه رو حذف کنید). حتی میشه با کوئری SELECT MAX(`update_time` FROM `comments` این مورد رو هم بطور خودکار مدیریت کرد (اگه یک رکورد جدید اضافه بشه یا رکوردی ویرایش بشه، کش از بین میره و دوباره کش میشه. توی پکیج درمورد کش دیتابیس توضیح دادم و مثال هم مطرح شده.

shadecute
جمعه 02 خرداد 1393, 15:32 عصر
یه سوال فقط در Fragment Caching که برای شروع
<?php if($this->beginCache($id)) { ?>
در صفخه ویو پست که محتوای یه مطلب رونمایش میدم منظور از این متغییری که ازمون می خواد چیه؟ $id
$id رو چی باید گذاشت؟

MMSHFE
شنبه 03 خرداد 1393, 14:39 عصر
id یک شناسه است که به این تکه کدی که میخواد کش بشه میدین تا بعداً بشه به راحتی پیداش کرد. مثلاً اگه به این تکه کد، شناسه 'test' بدین، هرجا توی هر قسمتی از پروژه که این کد رو بنویسید:

if($this->beginCache('test')) {
...
$this->endCache();
}
میاد چک میکنه کش 'test' الان expire شده یا نه و اگه نشده بود، همون محتوای کش رو اونجا درج میکنه و اگه expire شده باشه، دستورات بین beginCache و endCache اجرا میشه و هر خروجی که با دستور echo و... اینجا تولید بشه رو توی کش 'test' میگذاره.

shadecute
چهارشنبه 07 خرداد 1393, 17:38 عصر
ممنون استاد تست كردم و موفق شدم ممنون از راهنمايي
يه سوال ديگه داشتم نمي دونم اصلا هست همچين چيزي يا خير.

آيا چيزي به عنوان كش تصاوير در Yii وجود داره ؟‌
مثلا تصوير كاربران كش بشه كه پهناي باند خورده نشه الكي
يا كش فقط در مورد ديتاي ارسالي به ديتا بيس مورد استفاده قرار ميگيره

MRmoon
چهارشنبه 07 خرداد 1393, 18:14 عصر
دوست عزیز پردازش تصاویر به عهده ی کلاینت و مرورگر هست و مرورگر باید کش کنه نه سمت سرور.

MMSHFE
پنج شنبه 08 خرداد 1393, 07:44 صبح
البته اگه تصاویر با کمک PHP و GD تولید میشن، میتونید هدرهای مربوط به کش رو تنظیم کنید تا مرورگر وادار به کش کردن بشه (البته اگه توی تنظیماتش، کاربر مربوطه کش رو غیرفعال نکرده باشه).