امروز سه شنبه ۴ آذر ۱۳۹۹
09129313870
09132293870
09202293870
09356663870
02189783870
03195023870

ایده پردازان مهرگستر

خدمات طراحی و میزبانی وب و ثبت دامنه

  • ایده پردازان مهرگستر
  • ایده پردازان مهرگستر
  • ایده پردازان مهرگستر
  • ایده پردازان مهرگستر
shadow
نوشته شده در ۴ دی ۱۳۹۱ ساعت ۲۰:۳۹ | 3,102 بازدید

کش کردن هوشمند داده‌ها در وردپرس با Transients API

در این مطلب نحوه اصولی کش‌کردن داده‌ها در وردپرس را بررسی می‌کنیم. با Transients API آشنا می‌شویم و با یک مثال نحوه استفاده عملی از آن را یاد می‌گیریم.
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 این فید را یکبار دانلود و برای ۲ ساعت از آن اطلاعات استفاده کنیم و پس از ۲ ساعت دوباره آن را دریافت کنیم و به همین منوال…با اضافه کردن چند خط کد می‌توان از دانلود هزاران بار این اطلاعات جلوگیری کرد. در کد زیر این کار را به صورت عملی پیاده‌سازی کرده ایم.

[codesyntax lang=”php”]

[/codesyntax]

در مرکز کد و در قسمت if بررسی می‌کنیم که داده‌ای از قبل در کش وجود دارد و در صورت عدم وجود در قسمت else دوباره لیست آیتم‌های آن فید را تولید می‌کنیم.
همین الان استفاده کنید

حال که نحوه از Transients API را آموختید می‌توانید با استفاده از چند خط کد زمان لود صفحات خود را کاهش دهید که این‌کار تاثیرات زیادی همچون SEO را نیز در بر دارد. تنها با همان چند خط کد می‌توانید موقعیت بهتری را بین کاربران و موتورهای جستجو بدست آورید، آیا از این بهتر هم می‌شود.

چاپ این صفحه
لینک کوتاه این محصول : http://ipmg.ir/?p=897
دیدگاه ها (۱ دیدگاه)

One Response to “کش کردن هوشمند داده‌ها در وردپرس با Transients API”

Leave a Reply

افتخارات ما

  • امور
  • بیمارستان فوق تخصصی نور افشار تهران
  • شرکت سهامی ذوب اهن اصفهان
  • برخی شعب بیمه ایران
  • برخی شعب بیمه معلم
  • صندوق های نسوز جهان اصفهان
  • طراحی و ساخت تندیس راه هشتم
  • فروش اینترنتی پنبه ریز اصفهان
  • کانون آگهی و تبلیغات تاش
  • کانون فرهنگی رایت الحسین علیه السلام
  • کانون وکلای دادگستری استان بوشهر
  • کمیته امداد امام خمینی اصفهان
  • گروه صنعتی اسنوا
  • مرکز فرهنگی الغدیر اصفهان
  • موبایل ایرانی مینیاتور
  • نمایندگی انحصاری میل لنگ سانز اسپانیا در ایران
  • بازرگانی لادانی
  • سازمان منطقه آزاد کیش
  • گروه صنعتی فراز