PDA

View Full Version : کش کردن AR



amdvbgmail
پنج شنبه 15 اسفند 1392, 23:03 عصر
سلام و خسته نباشید خدمت دوستان و کاربران محترم
من دارم با اکتیو رکورد کار میکنم ،و طبق گفته ی دوستان کارایی رو پایین میاره .حالا من میخوام این Query هارو کش کنم ، توی اکتیو رکورد برای کش کردن باید چه تنظیماتی رو اعمال کرد و چیکار کرد؟

ممنون

bestirani2
پنج شنبه 15 اسفند 1392, 23:20 عصر
1. توی فایل کانفیگ تعریف کنید تا متاها رو کش کنه
2. هر مدل رو کش کنید که اموزش در زیر هست
http://www.yiiframework.com/doc/guide/1.1/en/caching.data

MMSHFE
پنج شنبه 15 اسفند 1392, 23:35 عصر
دقیقاً کی گفته استفاده از AR کارایی رو کاهش میده؟ اگه داده های شما به ندرت تغییر میکنه، Yii از حالتهای مختلف Cache مثل کش کوئریهای دیتابیس، کش بخشی از صفحه، کش کل صفحه و... پشتیبانی میکنه ولی به طور کلی استفاده از AR باعث کاهش کارآیی برنامه نمیشه.

amdvbgmail
جمعه 16 اسفند 1392, 15:24 عصر
با تشکر از پاسخ دوستان
توی بعضی از تایپیک ها خوندم که AR برای یه query ساده ده تا Query اضافه انجام میده همینم باعث کاهش سرعت بارگزاری صفحات میشه؟مشکلم الان همین query های اضافه ن.
توی کانفیگ باید تنظیم خاصی رو اعمال کنم برای کش؟؟ ، چند جا سرچ کردم به نتیجه نرسیدم
با تشکر

MMSHFE
جمعه 16 اسفند 1392, 15:58 عصر
نه چنین چیزی صحیح نیست. یک کوئری ساده بیشتر نمیزنه و هیچ جا برای کاری که راه ساده داره نمیاد ده تا ! کوئری اضافه بزنه. مثلاً کد زیر:

Users::model()->findByPk(5); این کوئری رو اجرا میکنه:
SELECT * FROM `users` WHERE (`id`='5');

bestirani2
جمعه 16 اسفند 1392, 17:55 عصر
با تشکر از پاسخ دوستان
توی بعضی از تایپیک ها خوندم که AR برای یه query ساده ده تا Query اضافه انجام میده همینم باعث کاهش سرعت بارگزاری صفحات میشه؟مشکلم الان همین query های اضافه ن.
توی کانفیگ باید تنظیم خاصی رو اعمال کنم برای کش؟؟ ، چند جا سرچ کردم به نتیجه نرسیدم
با تشکر
یه سری باگ داشت که کوئری بیشتر میگرفت ولی رفع شده. باگ مشابه هم پیدا کردید گزارش بدید تا رفع بشه.
دلیل سرعت کمترش اینه که متا دیتابیس رو هم میخونه که برای رفع این مشکل توی تنظیمات میگید که متا رو کش کنه تا هر دفعه نیاز نباشه از نو بخونه
اگه کش کنید تفاوت سرعت زیادی نداری ولی توسعه میشه برای قسمت هایی مربوط به آپدیت از اکتیو رکورد و برای قسمت نمایش محتوی از اکتیو رکورد استفاده نکنید.

amdvbgmail
شنبه 17 اسفند 1392, 14:13 عصر
با تشکر از پاسخ دوستان
تنظیمات متا دیتابیس رو چه جوری اعمال کنم مستندات خاصی در این مورد سرچ کردم گیر نیاوردم
میشه این تتظیم رو توضیح بدید به شکلی هست؟
مرسی

MMSHFE
شنبه 17 اسفند 1392, 18:17 عصر
اینجا (http://www.yiiframework.com/doc/api/1.1/CDbConnection#schemaCachingDuration-detail) رو ببینید. بعنوان یک مثال خیلی ساده، به تنظیمات کامپوننت DB این مورد رو اضافه کنید:

'schemaCachingDuration'=>30*60,
این تنظیم باعث میشه اطلاعات Schema تا 30 دقیقه Cache بشه. البته ناگفته نمونه که باید کامپوننت cache رو هم فعال کنید:


'components'=>array(
......
'cache'=>array(
'class'=>'system.caching.CMemCache',
'servers'=>array(
array('host'=>'localhost', 'port'=>3306, 'weight'=>100),
),
),
),

bestirani2
دوشنبه 19 اسفند 1392, 18:26 عصر
با تشکر از پاسخ دوستان
تنظیمات متا دیتابیس رو چه جوری اعمال کنم مستندات خاصی در این مورد سرچ کردم گیر نیاوردم
میشه این تتظیم رو توضیح بدید به شکلی هست؟
مرسی
توضیحات رو آقای شهرکی دادند
بهتره با apc استفاده کنید.