در این قسمت به نحوه اصولی کشکردن دادهها در وردپرس با Transients APIرا بررسی میکنیم.

Transients API چیست؟
Transients API یک روش ساده و استاندارد را برای ذخیره دادهها به صورت موقت در پایگاه داده با یک نام و بازه زمانی زندگی برای آن دادها، فراهم میکند. بعد از به پایان رسیدن زمان تعیین شده اطلاعات حذف میشوند و دیگر قابل دستیابی نیستند.
اگر درسایت خود به دادهای نیاز دارید که به ندرت به روزرسانی میشوند و در تهیه هر بار این دادهها زمان زیادی صرف می شود ولی نیازی نیست که هربار این اطلاعات ساخته شوند میتوانید از Transients API برای ذخیره موقت این دادهها استفاده کنید تا در هر بار استفاده از این داده نیازی به تولید دوباره آن نداشته باشید. با این کار میتوانید زمان لود صفحات را کاهش داده و درصد استفاده سایت از منابع سرور را کاهش دهید.
نحوه ذخیره و بازیابی دادههای کش بوسیله Transients API
توابع اصلی که در هنگام ذخیره و بازیابی دادههای مد نظر جهت کش شدن استفاده میکنیم توابع set_transient و get_transient هستند. تابع set_transient که از آن برای ذخیره داده کش استفاده میکنیم.
<?php set_transient( $transient , $value , $expiration ); ?>
|
این تابع سه متغیر ورودی دارد. نخست $transientکه نام قطعه دادهای است که باید کش شود. این نام در واقع شناسه یکتای آن داده است که در آینده از آن برای بازیابی دادههای کش شده استفاده میکنیم. متغیر دوم $valueهمان دادهای است که قصد کش کردن آن را داریم و از متغیر سوم یعنی $expirationبرای تعیین بازه زمانی که میخواهیم دادهها کش شوند استفاده میکنیم. توجه داشته باشید که مقدار این پارامتر بر حسب ثانیه است و وردپرس بعد از اتمام این زمان دادهها را از بانک اطلاعاتی حذف میکند.
زمانی که شما دادهای را ذخیره کردید میتوانید به راحتی با تابع get_transient و شناسه آن داده، داده را بازیابی کنید.
<?php get_transient( $transient ); ?>
|
همان طور که قبلتر اشاره کردیم برای بازیابی دادهها به شناسه یکتای آن داده نیاز داریم. با ارسال این شناسه به تابع get_transient میتوانیم به آن داده دسترسی پیدا بکنیم. این تابع دو نوع خروجی دارد. اول مقدار داده کش شده است و یا اینکه مقدار false به همین دلیل بعد از استفاده از این تابع میبایست بررسی کنیم که چه نوع دادهای در آن وجود دارد. میبایست در کدهای خود تمهیداتی را برای زمانی که دادههای کش حذف شدهاند در نظر بگیرید.
نکته ظریفی که در این قسمت وجود دارد این است که Transients API در هنگام عدم وجود داده مقدار false منطقی که با صفر مشخص میشود را به خروجی ارسال نمیکند چون این امکان وجود دارد که مقدار صفر همان دادهای باشد که آن را کش کرده باشید و به همین دلیل مقدار false را در یک آرایه قرار داده و آن را به خروجی ارسال میکند که برای تشخیص آن میتوان از عملگر شناسایی یکتا (===) به جای عملگر برابری (==) استفاده کرد. به صورت زیر:
if ( false === ( $value = get_transient( "value" ) ) ) {
// this code runs when there is no valid transient set
}
حذف دادههای کش شده بوسیله Transients API
برای حذف دادههای کش شده از تابع delete_transient استفاده میکنیم که شکلی یکسان با تابع get_transient که پیشتر بررسی کردیم دارد با این تفاوت که این تابع با دریافت شناسه داده کش شده آن را حذف میکند.
<?php delete_transient( $transient ); ?>
|
استفاده از Transient API در عمل
در اینجا میخواهیم برای شفافیت موضوع نحوه استفاده عملی از Transients API را بررسی کنیم. در این مثال میخواهیم دادههای یک فید را دریافت و آنها را نمایش دهیم. دانلود این فید در هر بار نمایش و ساختن یک لیست HTML از آیتمهای آن کار مناسبی نیست چون در هر بار دانلود و ساختن لیست خروجی آن فید زمان زیادی صرف دانلود و ساختن کد خروجی میشود که اینکار مخصوصا در سایتهای پر بازدید میتواند باعث افت سرعت لود صفحات گردد. اما میخواهیم با استفاده از Transients API این فید را یکبار دانلود و برای 2 ساعت از آن اطلاعات استفاده کنیم و پس از 2 ساعت دوباره آن را دریافت کنیم و به همین منوال…با اضافه کردن چند خط کد میتوان از دانلود هزاران بار این اطلاعات جلوگیری کرد. در کد زیر این کار را به صورت عملی پیادهسازی کرده ایم.
<?
$rss_itemslist = get_transient( "wp_feed" );
include_once (ABSPATH . WPINC . "/feed.php" );
if ( $rss !== FALSE){
echo $rss_itemslist ;
}
else {
$max_items = $rss_itemslist ->get_item_quantity(10);
$items = $rss_itemslist ->get_items(0, $max_items );
$fresh_list = "<ol>" ;
foreach ( $items as $item )
$fresh_list .= "<li>
<a href= "" . $item->get_link(); . "" > " . $item->get_title();" .</a>
</li>";
$fresh_list .= "</ol>" ;
set_transient( "wp_feed" , $fresh_list ,60*60*2 );
echo $rss_itemslist ;
}
?>
|
در مرکز کد و در قسمت if بررسی میکنیم که دادهای از قبل در کش وجود دارد و در صورت عدم وجود در قسمت else دوباره لیست آیتمهای آن فید را تولید میکنیم.
آدرس : کرج – گوهردشت – خیابان اصلی گوهردشت – بین خیابان نهم و دهم غربی– بالای بانک مهر– پلاک252 – واحد11
تلفن تماس :34483769- 026, 34496534- 026, 34496506- 026
ایمیل : Karaj@azaranweb.com
موضوع مطلب : اذران وب شعبه کرج, طراحی سایت در کرج, دادهها در وردپرس, کش کردن هوشمند دادهها در وردپرس با Transients API, شرکت طراحی