سایر بخش های سری آموزشی " ایجاد افزونه وردپرس "

مقدمه

کش کردن (Caching) به عملیاتی گفته می شود که در آن داده های پرکاربرد و یا درخواست شده که برای ایجادشان زمانی صرف می شود، پس از ایجاد و تحویل به کاربر یک نسخه از آن نگه داری می شود تا به هنگام درخواست های مجدد برای آن داده از گزینه کش شده استفاده کرد تا دیگر نیازی به ایجاد مجدد آن داده نباشد. بدین طریق کش می تواند سرعت اجرای عملیات را سریع‌تر کند.

 

چه زمانی باید از کش استفاده کرد؟

بدون هیچ توضیح اضافه‌ی همیشه! اما با این حال برخی مواقع لازم می شود که از کش استفاده نکنید. اگر بخواهید با داده های بلادرنگ (real time) و یا سرویس API کار کنید که به طور واضح اعلام می کند نباید از کش استفاده شود؛ در این مواقع بهتر است که دیگر مزیت کشینگ را کنار بگذارید. اما اگر چنین شرایط خاصی وجود نداشته باشد بهتر است که همیشه از کش استفاده کنید.

 

Transients وردپرس

Transients وردپرس یک راه حل ساده برای نگه داری و و استفاده از داده های کش شده است. با استفاده از Transients ها می توانید برای داده ها طول عمر از پیش تعریف شده مشخص کنید و یا بگویید تا زمانی که منبع داده بروزرسانی نشده است، داده کش شده همچنان وجود داشته باشد.

در صورتی که به عنوان توسعه دهنده وردپرس فعالیت کرده باشید به احتمال زیاد موافق خواهید بود که استفاده از تابع transient برای عملیات کش راحت‌ترین روش موجود است. در واقع transient ها در وردپرس به سه تابع تقسیم شده اند که می توانند این عملیات سنگین را به سادگی برای شما انجام دهند.

 

کش کردن داده ها

برای کش کردن داده ها از تابع set_transient() استفاده می شود. این تابع سه پارامتر زیر را قبول می کند:

  • $transient – نام transient
  • $value – مقدار transient
  • $expiration – مدت زمان نگه داری transient (براساس ثانیه)

به مثال زیر توجه کنید:

$response = wp_remote_get( 'httpss://api.github.com/users/blobaugh' );
 
set_transient( 'blobaugh_github_userinfo', $response, 60*60 );

در سطر اول با استفاده از تابع wp_remote_get اطلاعات یکی از کاربران سایت GitHub را دریافت می کنیم. سپس در سطر دوم با استفاده از تابع set_transient مشخص می کنیم که اطلاعات دریافتی برای یک ساعت نگه داری (کش) شود.

 

دریافت داده های کش شده

دریافت داده های کش شده تا حدودی پیچیده تر از کش کردن آنها است، به همین دلیل بهتر است ابتدا نگاهی به کدهای زیر بکنید:

$github_userinfo = get_transient( 'blobaugh_github_userinfo' );
 
if( false === $github_userinfo ) {
    // Transient expired, refresh the data
    $response = wp_remote_get( 'httpss://api.github.com/users/blobaugh' );
    set_transient( 'blobaugh_github_userinfo', $response, 60*60 );
}
// Use $github_userinfo as you will

ابتدا با get_transient درخواست خود را ارسال می کنیم.

سپس با استفاده از یک دستور شرطی بررسی می کنیم که آیا transient وجود دارد یا خیر.

در صورتی که transient وجود نداشت، کدهای موجود در دستور شرطی اجرا می شوند که همان عملیات دریافت و کش کردن داده ها است.

 

حذف داده کش شده

حذف داده کش شده در مقایسه با دو تابع قبلی بسیار ساده تر بوده و تنها یک پارامتر دارد که نام transient است را قبول می کند.

در ادامه همان مثال های فوق برای حذف داده های مربوط به کاربر دریافتی از GitHub می توانید از کد زیر استفاده کنید:

delete_transient( 'blobaugh_github_userinfo' );