Predpomnilnik strani reši 95 % težav s hitrostjo, toda ko so uporabniki prijavljeni in vsebina je dinamična, predpomnilnik strani zgreši. Predpomnilnik objektov reši to plast – shrani rezultate poizvedb v zbirko podatkov v RAM, tako da je odgovor takojšen vsakič, ko WordPress zastavi isto vprašanje. To je vodnik za uporabo in nastavitev.
Kaj je predpomnilnik objektov?
V normalnem delovanju vsaka zahteva PHP izvede poizvedbe v zbirki podatkov: »daj mi vse user_meta za uporabnika 5«, »daj mi možnost 'siteurl'«, »daj mi izraze za kategorijo«. Jedro WordPressa izvede 50–200 poizvedb v zbirki podatkov na zahtevo.
Predpomnilnik objektov shrani rezultate teh poizvedb v pomnilnik. Druga zahteva za isto poizvedbo → se vrne iz RAM-a in se ne dotakne baze podatkov.
Rezultati: 30–70 % manj poizvedb v zbirki podatkov, 20–50 % hitrejši odzivni čas za dinamične strani.
Redis
Najsodobnejša izbira. Shramba ključev in vrednosti v pomnilniku z veliko funkcijami.
Plus:
- Vztrajnost — lahko shrani stanje na disk in preživi ponovni zagon.
- Podatkovne strukture – nizi, seznami, zgoščene vrednosti, razvrščeni nabori (več kot le ključ-vrednost).
- Pub/Sub – za aplikacije v realnem času.
- Način gruče za skaliranje.
- Idealno kot zaledni sistem za čakalne vrste (Laravel čakalna vrsta, Sidekiq).
- Aktiven razvoj, najhitrejši razvoj funkcij.
Cena: odprtokodno brezplačno. Stroški RAM-a na strežniku.
Predpomnjeno
Starejša, enostavnejša možnost. Čisti predpomnilnik v pomnilniku.
Plus:
- Zelo preprosto, malo porabe pomnilnika.
- Večnitnost (Redis je enonitna – manj pomembna na majhnih strežnikih).
- Stabilno, v proizvodnji že leta.
Minus:
- Samo nizovne vrednosti (Redis ima več podatkovnih tipov).
- Brez vztrajnosti – ponovni zagon = vse izgine.
- Manj funkcij (brez objav/podnaslovov, brez razvrščenih naborov).
- Manj aktiven razvoj.
Primerjava na kratko
| Funkcija | Redis | Predpomnjeno |
|---|---|---|
| Hitrost | zelo hitro | zelo hitro |
| Vrste podatkov | veliko | samo niz |
| Vztrajnost | da (neobvezno) | ne |
| Pub/sobota | to | ne |
| Grozd | vgrajeno | na strani odjemalca |
| Večnitni | od 6.x | ja, od leta 2009 |
| Zaledni del čakalne vrste | odlično | ne |
| Učinkovitost pomnilnika | dobro | zelo dobro |
Naše priporočilo: Redis za 99 % primerov. Memcached le, če že imate infrastrukturo ali če obstaja določen razlog.
Namestitev Redisa na strežniku cPanel/CloudLinux
- Skrbnik strežnika namesti razširitev
redisinphp-redis:yum install redis php-redis # RHEL/Alma systemctl enable --now redis - Preverite, ali je nameščen:
redis-cli ping→ "PONG". - Nastavi
/etc/redis.conf:
Politika LRU = ko je RAM poln, izbriše najmanj uporabljene ključe.bind 127.0.0.1 maxmemory 512mb maxmemory-policy allkeys-lru - Ponovni zagon:
systemctl restart redis. - V PHP-ju:
php -m || grep redis, da se prepričate, da je modul naložen.
Predpomnilnik objektov WordPress Redis
Vtičnik: Predpomnilnik objektov Redis (Do Krüssa)
Najboljši brezplačni vtičnik. Aktivirajte ga, kliknite »Omogoči predpomnilnik objektov« → končano.
// wp-config.php define('WP_CACHE', true); define('WP_REDIS_HOST', '127.0.0.1'); define('WP_REDIS_PORT', 6379); define('WP_REDIS_PASSWORD', 'optional'); define('WP_REDIS_PREFIX', 'wpsite1_'); // važno ako više sajtova dijeli RedisVtičnik prikazuje statistiko: stopnjo zadetkov, poizvedbe, porabljen pomnilnik.
Predpomnilnik objektov Pro (plačljivo)
Premium različica (od ~95 USD/leto) – boljša zmogljivost, analitika za več najemnikov, asinhrono podvajanje.
WooCommerce + Redis
WC ima še posebej zahtevno obremenitev baze podatkov. Predpomnilnik objektov Redis + predpomnilnik strani (z ESI ali predpomnilnikom fragmentov za košarico) je standard za produkcijski WC.
Nasveti, specifični za WC:
- Predpomnilnik mora preskočiti končne točke AJAX update-cart – ne cache-aj live cart.
- Prehodni pojavi za poizvedbe o izdelkih drastično pospešijo stran trgovine.
- Preverjanje kuponov v skrbniškem delu je znano počasno, prehodne spremembe pomagajo.
Laravel + Redis
Laravel takoj po namestitvi podpira Redis kot gonilnik predpomnilnika, gonilnik seje, gonilnik čakalne vrste in gonilnik oddajanja. Zelo priporočljivo.
# .env CACHE_DRIVER=redis SESSION_DRIVER=redis QUEUE_CONNECTION=redisKoda:
Cache::remember('expensive.query', 3600, fn() => User::with('orders')->active()->get() );Prvi klic poizvedbe v zbirki podatkov, zadetek predpomnilnika naslednjo uro.
Razveljavitev predpomnilnika
"V računalništvu sta samo dve težki stvari: razveljavitev predpomnilnika in poimenovanje stvari."
Strategije:
- TTL (čas do izteka) — nastavite rok veljavnosti, npr. 1h. Predpomnilnik se izbriše sam. Najenostavnejše.
- Razveljavitev na podlagi dogodkov – ko se podatki spremenijo (npr. po posodobitvi), razveljavite vse predpomnilnike, ki jih vsebujejo. Zapleteno, a natančno.
- Označevanje predpomnilnika – združevanje predpomnilnikov po oznakah, brisanje celotne oznake naenkrat. Podpora za Redis + Laravel.
- Različice – vključite različico v ključ predpomnilnika (npr.
users:v2:list), nadgradite različico med spremembo sheme, stari predpomnilnik se ne dotakne, vendar se nikoli več ne prebere.
Česa NE smete predpomniti
- Podatki o seji, specifični za uporabnika – predpomnjeni z uporabniškim ID-jem, ne globalno.
- Podatki v realnem času (klepet v živo, zaloga, prisotnost).
- Varnostna preverjanja (npr. is_admin) – ne shranjujte rezultata preverjanja dovoljenj v predpomnilnik, razen če je TTL zelo kratek.
- Oblikujte žetone CSRF.
Spremljanje
-
redis-cli info stats— stopnja zadetkov, izključeni ključi, skupno število povezav. -
redis-cli --bigkeys— poišče velike ključe, ki porabijo pomnilnik. - Nadzorna plošča Grafana Redis – vizualni nadzor.
- Vtičnik WP Redis Object Cache prikazuje stopnjo zadetkov na zahtevo.
Ciljna stopnja zadetkov: 80 %+. Manj pomeni, da strategija predpomnilnika ni v redu ali da je omejitev pomnilnika prenizka (izključeni ključi).
Velikost pomnilnika
Realistična ocena:
- Majhen blog (1000 obiskov/dan): 64 MB Redis.
- Srednja WP stran: 256 MB.
- Izdelki WooCommerce 1000: 512 MB.
- Veliki WC 10k izdelki: 1-2 GB.
- Večnajemniška SaaS: gruča z 2 GB ali več.
Več spletnih mest na istem strežniku – imenski prostor
Če si 5 spletnih mest deli instance Redisa, uporabite za vsako drugačen WP_REDIS_PREFIX . V nasprotnem primeru se bodo predpomnilniki prekrivali.
Alternativa: databases v Redisu (0-15), vsako mesto na svoji bazi podatkov:
define('WP_REDIS_DATABASE', 1); // sajt 1 define('WP_REDIS_DATABASE', 2); // sajt 2Pasti
- Redisu zmanjka pomnilnika: nastavite
maxmemory-policy allkeys-lru, nenoeviction. - Redis izpostavljen na javnem IP-naslovu: NIKOLI — veži se na 127.0.0.1 ali zahtevaj pass.
- Vztrajnost upočasni pisanje: posnetki RDB so v redu, AOF (datoteka samo za dodajanje) se lahko upočasni pri pisanju z veliko hitrostjo. Za predpomnilnik objektov onemogočite vztrajnost (predpomnilnik ni kritičen podatek).
- Zastareli predpomnilnik: če posodobitev zaobide logiko razveljavitve predpomnilnika, ostanejo stari podatki. Defenzivni TTL pomaga.
- Počasni ukazi blokirajo Redis:
KEYS *blokira vse. UporabiteSCANali pripravo na vzorec.
WMD in Redis
Vsi upravljani VPS-ji in namensko gostovanje s strani WMD imajo prednameščen Redis, optimiziran za delovne obremenitve WP/WC/Laravel (pravilnik LRU, brez vztrajnosti predpomnilnika, dodelitev 256 MB–1 GB, odvisno od paketa). Za stranke z deljenim gostovanjem ponujamo Redis kot storitev na račun na zahtevo. Namestitev vtičnikov + konfiguracija + spremljanje so vključeni v vzdrževalni načrt. Za stranke z več lokacijami nastavimo imenski prostor ali namensko bazo podatkov na lokacijo.
Pogosta vprašanja
Redis ali Memcached za WordPress? Redis. Boljše funkcije, enaka hitrost, enaki stroški nastavitve.
Ali potrebujem Redis, če uporabljam predpomnilnik strani? Predpomnilnik strani zajema anonimne obiske. Predpomnilnik objektov zajema prijavljene uporabnike in blagajno. Spletna trgovina brez predpomnilnika objektov → počasna blagajna.
Redis na deljenem gostovanju? Odvisno od ponudnika. WMD ima Redis na deljenih paketih. Mnogi deljeni ponudniki gostovanja ga nimajo.
Kaj pa, če Redis ne deluje? WordPress se samodejno vrne na poizvedbe v zbirki podatkov. Spletno mesto deluje, le počasneje. Spletno mesto ne ne deluje, ko Redis ne deluje.
Ali lahko uporabim en Redis za predpomnilnik + čakalno vrsto + sejo? Da, ampak bolje je uporabiti različne baze podatkov (0=predpomnilnik, 1=čakalna vrsta, 2=seja) za izolacijo. Če pokvariš eno, ne pokvariš druge.
Potrebujete namestitev ali migracijo Redisa? WMD namesti, konfigurira in spremlja Redis za odjemalce WP/WC/Laravel. Stopite v stik z nami prek kontaktnega obrazca .