
کش کردن (Caching) به عملیاتی گفته می شود که در آن داده های پرکاربرد و یا درخواست شده که برای ایجادشان زمانی صرف می شود، پس از ایجاد و تحویل به کاربر یک نسخه از آن نگه داری می شود تا به هنگام درخواست های مجدد برای آن داده از گزینه کش شده استفاده کرد تا دیگر نیازی به ایجاد مجدد آن داده نباشد. بدین طریق کش می تواند سرعت اجرای عملیات را سریعتر کند.
بدون هیچ توضیح اضافهی همیشه! اما با این حال برخی مواقع لازم می شود که از کش استفاده نکنید. اگر بخواهید با داده های بلادرنگ (real time) و یا سرویس API کار کنید که به طور واضح اعلام می کند نباید از کش استفاده شود؛ در این مواقع بهتر است که دیگر مزیت کشینگ را کنار بگذارید. اما اگر چنین شرایط خاصی وجود نداشته باشد بهتر است که همیشه از کش استفاده کنید.
Transients وردپرس یک راه حل ساده برای نگه داری و و استفاده از داده های کش شده است. با استفاده از Transients ها می توانید برای داده ها طول عمر از پیش تعریف شده مشخص کنید و یا بگویید تا زمانی که منبع داده بروزرسانی نشده است، داده کش شده همچنان وجود داشته باشد.
پیشنهاد می کنیم مقدمه برپاسازی وردپرس
در صورتی که به عنوان توسعه دهنده وردپرس فعالیت کرده باشید به احتمال زیاد موافق خواهید بود که استفاده از تابع transient برای عملیات کش راحتترین روش موجود است. در واقع transient ها در وردپرس به سه تابع تقسیم شده اند که می توانند این عملیات سنگین را به سادگی برای شما انجام دهند.
برای کش کردن داده ها از تابع set_transient() استفاده می شود. این تابع سه پارامتر زیر را قبول می کند:
به مثال زیر توجه کنید:
|
$response = wp_remote_get( 'https://api.github.com/users/blobaugh' ); set_transient( 'blobaugh_github_userinfo', $response, 60*60 ); |
در سطر اول با استفاده از تابع wp_remote_get اطلاعات یکی از کاربران سایت GitHub را دریافت می کنیم. سپس در سطر دوم با استفاده از تابع set_transient مشخص می کنیم که اطلاعات دریافتی برای یک ساعت نگه داری (کش) شود.
دریافت داده های کش شده تا حدودی پیچیده تر از کش کردن آنها است، به همین دلیل بهتر است ابتدا نگاهی به کدهای زیر بکنید:
|
1 2 3 4 5 6 7 8 |
$github_userinfo = get_transient( 'blobaugh_github_userinfo' ); if( false === $github_userinfo ) { // Transient expired, refresh the data $response = wp_remote_get( 'https://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' ); |
برچسب:
نویسنده: محمد رضا جوادیان