Transients API הינה סיפרייה לשמירת מידע זמני במסד נתונים על בסיס מפתח (key) וערך (value) עם תאריך תפוגה בטבלת wp_options ומאפשרת לנו להשתמש במסד נתונים כאמצעי לביצוע Caching במגוון דרכים.

לוגו של טלגרם הצטרפו לערוץ הטלגרם וקבלו עדכון כאשר מאמר חדש מתפרסם!

למה להשתמש ב-Transients API?

רוב מפתחי התוספים והתבניות אוהבים להשתמש ב-Options API על מנת לשמור מידע (כגון הגדרות) של התוסף או התבנית שלהם, אך לפעמים נעשה שימוש לא נכון, ונעשה שימוש ב-Options API במקום ב-Transients API.

ההבדל הגדול בין Options API לבין Transients API הוא שב-Transients API ניתן לשמור מידע שיהיה פג תוקף, כלומר, להגדיר לו תוך כמה זמן הוא אמור להמחק מהמסד נתונים.

שימושים אפשריים ל-Transients API

מקרה א׳

האתר שלנו מבצע קריאת API לשירות חיצוני כגון Twitter על מנת להציג את הציוצים האחרונים, במקרה כזה כל טעינה של עמוד תבצע את קריאת ה-API הזאתי, מצב שמוביל לכך שזמן הטעינה של העמוד שלנו מתארך טיפה כי השרת ממתין לקבל את המידע מהשירות החיצוני לפני שהוא ממשיך בהצגת העמוד.

מקרה ב׳

בנינו לאתר שלנו תוסף שסופר את הצפיות שיש למאמרים השונים באתר, אך אנחנו מעוניינים שהצפיות יהיו צפיות יחודיות, לכן אנחנו נשמור במסד נתונים את כתובות ה-IP של הגולשים באתר פר מאמר כך שנוכל לבצע זאת.

ביצוע Caching למידע המוחזר מקריאות API ושמירת מידע אשר יאבד את חשיבותו לאחר X זמן הינם מקרים ברורים אשר מצביעים על כך שעלינו להשתמש ב-Transients API.

איך עובד Transients API?

מרבית סיפריות ה-API ש-WordPress מציעה, מבצעות אינטראקציה עם המסד נתונים, ומכיוון שפנייה למסד נתונים בביצוע שאילתות מורכבות ותכיפות מאטות את עליית האתר, השירותים האלו משתמשים ב-WordPress Object Caching, אשר מבצע שמירה של התוצאות המוחזרות בזיכרון למשך פרק זמן מוגבל על מנת לחסוך במשאבים.

לדוגמא, כאשר העמוד נטען, מתבצעת שאילתת SQL אשר מחזירה את כל התוצאות הקיימות בטבלת wp_options.
בהמשך הקוד אם תתבצע קריאה לפונקציה get_option לדוגמא, במקום לגשת למסד נתונים, תתבצע פניה לזיכרון ה-RAM והמידע יוחזר משם במקום מהמסד נתונים, דבר אשר מייעל את הקוד ואת זמן טעינת האתר.

Transients API שומר את המידע במסד נתונים לאורך זמן שהוגדר לו ע״י המפתח בעת יצירת ה-Transient ועובד גם הוא עם WordPress Object Cache.

מקרה זה נכון אך ורק אם אנחנו לא משתמשים בתוסף אשר מפעיל את ה-Persistent Cache, כלומר תוספים כגון W3 Total Cache וכד׳.
במקרה כזה WordPress Object Cache מבצע שמירה של המידע בקבצים בתיקיית wp-content, דבר אשר מאפשר לנו ליעל את זמן טעינת האתר מכיוון שכעת המידע אינו נשמר לתקופת טעינת העמוד, אלא לאורך פרק זמן המוגדר ע״י התוסף.

שימוש ב-Transients API

טוב, אחרי שהתלכלכנו קצת במושגים והבנו קצת יותר לעומק איך WordPress עובדת, הגיע הזמן להתלכלך בקוד, Transients API כולל 6 פונקציות (נכון לזמן כתיבת המאמר).

שמירת מידע

על מנת לשמור מידע נשתמש בפונקציה set_transient אשר מקבלת 3 פרמטרים:

  • מפתח (key) // מזהה כלשהו אשר בעזרתו נזהה את המידע, אורך המפתח לא יכול עלות על יותר מ-40 תווים.
  • ערך (value) // המידע אותו אנחנו רוצים לשמור, ניתן להעביר כמערך או כאובייקט, אין צורך לבצע serialize מכיוון שהפונקציה מטפלת בזה לבד.
  • זמן תפוגה // תוחלת החיים של המידע, יש להעביר את הזמן בשניות, לדוגמא שעה = 3600.
set_transient( "dorzki_transient_test", array( "Hello", "World" ), 3600 );

זמן תפוגה

WordPress מאפשרת לנו להשתמש בקבועים (constants) על מנת להגדיר לכמה זמן אנחנו מעוניינים לשמור את המידע.

  • דקה // MINUTE_IN_SECONDS
  • שעה // HOUR_IN_SECONDS
  • יום // DAY_IN_SECONDS
  • חודש // MONTH_IN_SECONDS
  • שנה // YEAR_IN_SECONDS

אחזור מידע

על מנת לקבל את המידע מהמסד, נשתמש בפונקציה get_transient אשר מקבלת פרטמר אחד – מפתח (key).

$greeting = get_transient( "dorzki_transient_test" );

if( $greeting === false ) {
  // Expired...
}

הפונקציה תחזיר false במידה והערך פג תוקף או לא קיים, לכן חשוב לבצע בדיקת פלט לפני המשך הקוד.

מחיקת מידע

במידה והשתמשנו ב-Transients API בתוסף או תבנית, נרצה למחוק את המידע הקיים על מנת לא להשאיר ״זבל״ במסד נתונים, לכן נשתמש בפונקציה delete_transient אשר מקבלת פרמטר אחד – מפתח (key).

delete_transient( "dorzki_transient_test" );

שימוש ב-Transients API ב-Multisite

במידה ונרצה להשתמש בפונקציות ברשת אתרים (multisite), נצטרך להשתמש בפונקציות דומות – set_site_transient, get_site_transient ו-delete_site_transient.

סיכום

Transients API הינו כלי חזק מאוד אשר מאפשר לנו לשמור מידע זמנית ולא לדאוג לגבי ניפוח של המסד נתונים במידע ״זבל״ אשר מאבד את ערכו לאחר זמן מסויים.

דור צוברי

מתכנת מגיל 13, ומתעסק עם וורדפרס מגיל 18, אוהב לפצח אתגרים ולפתח דברים מורכבים על בסיס וורדפרס. עצמאי מגיל 16, מרצה ובלוגר. בזמן הפנוי שלי אוהב מאוד לקרוא קומיקס של MARVEL.

דור צוברי

תגובות לפוסט

כתיבת תגובה