Transients API: kako da keširate spore delove WordPressa
26. 7. 2026.
Ako vaš WordPress na svakoj strani izvršava spor upit ili poziva neki spoljni API (recimo kurs valuta ili broj pratilaca), plaćate tu cenu iznova za svakog posetioca. Transients API je ugrađeni WordPress mehanizam koji taj rezultat sačuva na zadato vreme, pa se skupi posao obavi jednom, a naredne posete dobiju gotov odgovor iz keša. Nije potreban nijedan plugin — sve je već deo WordPress jezgra.
Šta je transient
Transient je par „ključ → vrednost" sa rokom trajanja. Za razliku od obične opcije (update_option) koja traje zauvek, transient ima ugrađen datum isteka. Kada rok prođe, WordPress ga tretira kao da ne postoji, pa ga vaš kod ponovo izračuna i sačuva. Idealno za podatke koji su „dovoljno sveži" i posle nekoliko minuta ili sati.
Tri funkcije koje treba da znate
set_transient( 'kljuc', $vrednost, $trajanje )— sačuvaj vrednost na zadato vreme u sekundama.get_transient( 'kljuc' )— vrati vrednost, ilifalseako je istekla ili ne postoji.delete_transient( 'kljuc' )— obriši ručno, kada znaš da su podaci zastareli.
Za trajanje koristite WordPress konstante radi čitljivosti: HOUR_IN_SECONDS, DAY_IN_SECONDS, WEEK_IN_SECONDS.
Tipičan obrazac u kodu
Skoro svaki transient prati isti šablon: probaj iz keša, ako nema — izračunaj i sačuvaj.
$podaci = get_transient( 'najnoviji_kursevi' );
if ( false === $podaci ) {
$podaci = poziv_ka_api(); // spor deo
set_transient( 'najnoviji_kursevi', $podaci, 6 * HOUR_IN_SECONDS );
}
return $podaci;
Prvi posetilac plati poziv ka API-ju, svi ostali narednih 6 sati dobiju rezultat trenutno. Ako API padne, imate poslednji dobar rezultat u kešu umesto prazne stranice.
Gde se transients čuvaju
Podrazumevano, transients žive u tabeli wp_options. To je zgodno, ali ima manu: istekli transients se ne brišu odmah i vremenom zatrpaju tabelu, što usporava učitavanje autoload opcija. Zato povremeno očistite bazu. Ako imate Redis ili Memcached object cache (mnogi kvalitetni hostinzi ga nude), WordPress automatski smešta transients u memoriju umesto u bazu — čitanje je tada još brže i ne opterećuje wp_options.
Kada obrisati transient ručno
Transient sam istekne po roku, ali ponekad podaci zastare ranije. Na primer, keširate listu proizvoda na sat vremena, a admin doda novi proizvod za 10 minuta. Tada u „hook" koji se okida pri čuvanju proizvoda dodate delete_transient( 'lista_proizvoda' ), pa se keš osveži pri sledećoj poseti. Ovo se zove invalidacija keša i ključno je za tačnost.
Česte greške
Prva: keširanje podataka specifičnih za korisnika pod istim ključem — svi onda vide tuđe podatke. Za takve slučajeve dodajte ID korisnika u ključ. Druga: predugačak ključ; ograničenje je 172 znaka. Treća: oslanjanje na transient za nešto kritično bez rezervne logike — ako je vrednost false, kod mora znati da preračuna, a ne da pukne.
Česta pitanja
Razlikuju li se transients od keša stranice? Da. Keš stranice čuva ceo HTML izlaz; transients keširaju jedan mali deo podataka unutar PHP-a. Korisni su baš kada ne možete da keširate celu stranicu (npr. delimično dinamičan sadržaj).
Da li mi treba plugin? Ne za korišćenje — Transients API je deo WordPressa. Plugin (ili object cache na hostingu) samo poboljšava gde se transients skladište.
Naši WordPress hosting paketi dolaze sa serverskim keširanjem i NVMe diskovima, a object cache drži transients u memoriji za maksimalnu brzinu. Pogledajte pakete i cene.