Bugünkü yazımızda bir veriyi önbellekte tutmak için kullanabileceğimiz en kolay ve etkili yöntemlerden biri olan WordPress Transients APIe değineceğiz.
Öncelikle yazıyı okurken diğer taraftanda APInin kendi döküman sayfası açık kalsın. Transients API temel olarak 6 fonksiyondan oluşur. Aslında teknik olarak 3 fonksiyondan bahsedebiliriz, çünkü set_site_transient() ile set_transient() arasındaki temel fark _site_ fonksiyonlarının multisite için tasarlanmış olmasıdır. Bu açısından bakınca 3 fonksiyonu incelememiz yeterli gelecektir.
set_transient(),
Bir veriyi önbelleğe alırken şu şekilde;
Kod:
set_transient( $transient, $value, $expiration );
Not: Saniye cinsinden değer girerken WordPress 3.5 te eklenen zaman sabitlerinden faydalanabilirsiniz.
Kod:
MINUTE_IN_SECONDS = 60 (seconds) HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS
get_transient()
Transient olarak tutulan veriyi çağırmaya yarar. Şu şekilde
Kod:
get_transient( $transient );
şeklinde kullanılır. Aldığı tek parametre, çağırdığı transientin adıdır.
delete_transient()
Transient olarak tutulan verilerin zaten yaşam aralığını biz belirlediğimiz için belirli bir süre sonra kendi kendini imha edecektir.
Bu yüzden en az kullanılan fonksiyon delete_transient() fonksiyonu olsa da, bazı durumlarda (silme, güncelleme vs gibi) yardımcı olabilmekte. Gelelim kullanımına;
Kod:
delete_transient( $transient );
Örnek Senaryo
Transient APIi temanızda eklentinizde vs.. pek çok yerde yaygın olarak kullanabilirsiniz, temelde Options API ile aynı şekilde çalışsa da, kendi kendini yok etme özelliği cache için güzel bir ortam sunar.
Özellikle pahalı sorgular diyebileceğimiz bir değerin hesaplanmasının uzun süre aldığı yada sistem kaynağını yorduğu değerler, sürekli güncel olmak zorunda değilse bu gibi noktalarda çok faydasını görürsünüz.
Yada bir başka örnek vermek gerekirse Uzak bir sunucudan aldığınız veriyi transientte tutabilir, böylece her isteği uzaktaki sunucuya yapıp performans kaybına neden olmazsınız ( şahsen kullandım, çok faydasını gördüm ) .
