x86_64 5 ارسال شده در شهریور 94 گزارش بازنشر ارسال شده در شهریور 94 سلام. مشغول کار روی سایتی هستم که به خاطر بازدید زیاد، فشار زیادی روی دیتابیسش هست. و بعد از امتحان پلاگینهای مختلف کش، دیدم برای این سایت (که در تم اون ویدجتهای زیادی گذاشتم که هر کدوم کوئریهای سنگینی به دیتابیس تحمیل میکنه)، بهترین راه، استفاده از توابع Transient برای کش کردن هر یک از این ویدجتهاست.حالا با توجه به تسلط نداشتن به سازوکار داخلی وردپرس، سوالی که از اساتید دارم اینه که وقتی یک کوئری با get_posts انجام میدیم و پستهای اون رو در یک حلقه foreach پیمایش میکنیم، یا وقتی یک شی WP_Query میسازیم و با have_posts در یک حلقه پیمایشش میکنیم، این که صرفا همون خروجی get_posts یا WP_Query رو با transient کش کنیم کافیه؟ یا اینکه توابع «داخل حلقه» (یعنی get_post_meta و comments_number و get_the_post_thumbnailو get_the_title و get_permalink) هم به نوبه خودشون روی دیتابیس کوئری اجرا میکنن و اونها هم نیاز به کش دارن؟ممنونم نقل قول لینک به ارسال
SM-Mahdavi 5427 ارسال شده در شهریور 94 گزارش بازنشر ارسال شده در شهریور 94 سلامآرگومان های ورودی حلقه کش بشن کافیه. چون توابعی که داخل حلقه اجرا میشن عملا به ورودی وابسته هستند. 3 نقل قول لینک به ارسال
x86_64 5 ارسال شده در شهریور 94 مالک گزارش بازنشر ارسال شده در شهریور 94 منظورتون اینه که وقتی شی WP_Query ساخته شد و کوئری رو روی دیتابیس انجام داد، تمام دیتاهای مورد نیاز توابع داخل حلقه از قبیل get_the_post_thumbnail داخل همین شیء هست و دوباره کوئری جدیدی انجام نمیشه؟ نقل قول لینک به ارسال
فرحان 997 ارسال شده در شهریور 94 گزارش بازنشر ارسال شده در شهریور 94 سلام.بله منظورشون همینه و البته یه نکته ی دیگه هم هست که اگر اشتباه نکنم وردپرس به طور خودکار کوئری ها رو کش می کنه و گمان نکنم نیازی به کش کردن مجدد باشه.و کاری که می تونید برای کاهش بار انجام بدید این هست قسمت جستجوی سایت بردارید و به جاش از سرچ گوگل استفاده کنید.یا مثلا ویجت ها رو از چرخه حذف کنید و در عوض سورسشون رو مستقیما توی قالب بزارید.یا مثلا از کوئری های واکشی رندوم استفاده نکنید.و از این جور کارها 2 نقل قول لینک به ارسال
x86_64 5 ارسال شده در شهریور 94 مالک گزارش بازنشر ارسال شده در شهریور 94 (ویرایش شده) بله حرفتون درسته، وردپرس کوئریها رو کش میکنه، اما به صورت per request کش میکنه. یعنی تا پایان نشست جاری شما میتونید با استفاده از توابع wp_cache_set و wp_cache_get استفاده کنید. اما اگه میخواید چیزی رو در نشستی کش کنید و در نشستها بعدی ازش استفاده کنید، باید از متدهای کش persistent (یعنی ماندگار) از قبیل Transient API استفاده کنین. شاید بخواید اینجا رو بخونید. ویرایش شده شهریور 94 توسط x86_64 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .