Keširanje (caching) je jedna od najvažnijih tehnika za optimizaciju performansi sajta. Ukratko, keširanje podrazumeva čuvanje kopija podataka na mestu koje je brže dostupno, kako bi se sledeći put isti podaci učitavali mnogo brže.
U ovom članku ćemo proći kroz sve vrste keširanja, objasniti kako funkcionišu i pokazati kako keširanje može pomoći ne samo u brzini sajta, već i u odbrani od botnet napada.
1. Šta je keširanje i zašto je važno?
Keširanje je proces čuvanja kopija podataka u privremenoj memoriji (kešu) kako bi budući zahtevi za tim podacima bili brži. Zamislite keš kao "brzu policu" pored radnog stola - umesto da svaki put idete u arhivu po dokument, držite ga pri ruci.
Prednosti keširanja su višestruke:
- 🚀 Brže učitavanje - stranice se učitavaju do 80% brže
- 💾 Manje opterećenje servera - server ne mora svaki put da generiše isti sadržaj
- 📈 Bolji SEO - Google rangira brže sajtove više
- 🛡️ Veća otpornost na napade - keširane stranice se serviraju bez opterećenja baze
- 💰 Manji troškovi hostinga - manje korišćenje resursa
2. Vrste keširanja
2.1 Browser keširanje (Client-side cache)
Browser keš podrazumeva da korisnikov pregledač čuva kopije statičkih fajlova: CSS, JavaScript, slike, fontove. Kada korisnik ponovo poseti sajt, ovi fajlovi se učitavaju sa njegovog diska, a ne sa servera.
- Kako se kontroliše? Preko HTTP header-a:
Cache-Control,Expires,ETag - Koliko dugo? Od nekoliko sati do godinu dana (za statičke fajlove)
- Primer:
Cache-Control: max-age=31536000(1 godina)
2.2 Server keširanje (Server-side cache)
Ovo je keširanje na nivou servera, gde se čuvaju gotovi HTML odgovori, rezultati upita ka bazi ili kompajlirani PHP kod.
Vrste server keširanja:
- OPcache (PHP) - čuva kompajlirani PHP kod u memoriji, tako da se ne kompajlira svaki put.
- Redis / Memcached - keširanje rezultata upita ka bazi podataka.
- Page caching - ceo HTML stranica se čuva kao statički fajl (npr. WP Rocket, W3 Total Cache).
- Object caching - keširanje pojedinačnih objekata (npr. WordPress transijenti).
2.3 CDN (Content Delivery Network)
CDN je mreža servera širom sveta koja čuva kopije statičkih fajlova. Korisnik dobija fajlove sa najbližeg servera, što smanjuje latenciju.
- Primeri CDN: Cloudflare, Akamai, Amazon CloudFront
- Prednost: Fajlovi se učitavaju sa udaljenosti od nekoliko stotina kilometara umesto nekoliko hiljada.
3. Kako keširanje štiti od botnet napada?
Kada botnet (poput onog koji je napadao naše korisnike) pošalje stotine zahteva u sekundi, server bi bez keširanja:
- Svaki zahtev obradio - pokrenuo PHP, upitao bazu, generisao HTML
- Brzo dostigao limit resursa - CPU i memorija bi bili preopterećeni
- Postao nedostupan - legitimni korisnici ne bi mogli da pristupe sajtu (DoS napad)
Sa keširanjem, situacija je potpuno drugačija:
- Prvi zahtev generiše HTML i čuva ga u kešu
- Narednih 1000 zahteva dobija već gotov HTML iz keša
- Server ne opterećuje bazu niti pokreće PHP za svaki zahtev
- Sajt ostaje dostupan i brz čak i pod udarom botneta
Keširanje i CSRF zaštita
Važna napomena: Stranice sa formama ne treba keširati u potpunosti, jer CSRF token mora biti svež za svaku sesiju. Međutim, statički delovi stranice (CSS, JS, slike) i dalje mogu biti keširani.
- Keširajte: CSS, JavaScript, slike, fontove, HTML za javne stranice
- Nemojte keširati: Stranice sa formama, admin panele, korisničke profile
4. Kako implementirati keširanje?
4.1 Browser keširanje (Apache/nginx)
Apache (.htaccess):
<filesMatch "\.(css|js|jpg|jpeg|png|gif|ico|svg|woff2)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
nginx:
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
4.2 WordPress keširanje
- WP Rocket - najpopularniji plugin za keširanje
- W3 Total Cache - napredna podešavanja
- LiteSpeed Cache - odličan za LiteSpeed servere
4.3 Server keširanje (PHP OPcache)
OPcache je ugrađen u PHP i čuva kompajlirani PHP kod u memoriji. Uključuje se u php.ini:
opcache.enable=1 opcache.memory_consumption=256 opcache.max_accelerated_files=10000
4.4 Redis / Memcached (Object caching)
Za keširanje upita ka bazi podataka, koristite Redis ili Memcached:
- Redis - brži, podržava različite tipove podataka
- Memcached - jednostavniji, samo ključ-vrednost
5. Keširanje i SEO
Keširanje ima direktan pozitivan uticaj na SEO:
- Core Web Vitals - keširanje poboljšava LCP, FID i CLS
- Google PageSpeed Insights - više ocene = bolje rangiranje
- Mobile-first indeksiranje - keširanje je još važnije za mobilne uređaje
- Smanjuje bounce rate - brži sajt zadržava korisnike
6. Uobičajene greške pri keširanju
- ❌ Predugo keširanje dinamičkog sadržaja - korisnici vide stare podatke
- ❌ Keširanje svih stranica - forme i admin paneli moraju biti sveži
- ❌ Zaboravljanje da se obriše keš nakon izmena - korisnici vide staru verziju sajta
- ❌ Ne korišćenje CDN-a - propuštanje prilike za dodatno ubrzanje
- ❌ Keširanje bez verzionisanja - korisnici mogu dobiti stare CSS/JS fajlove
Kako izbeći ove greške?
- Verzionisanje fajlova - dodajte broj verzije u URL:
style.css?v=1.2.3 - Keširajte samo statičke fajlove - HTML ne duže od nekoliko sati
- Koristite cache busting - automatsko osvežavanje keša pri novim izmenama
- Redovno brišite keš - posebno nakon većih izmena
Zaključak
Keširanje je jedan od najefikasnijih načina da poboljšate performanse svog sajta, smanjite opterećenje servera i zaštitite se od botnet napada. Pravilnom implementacijom sva tri nivoa keširanja (browser, server i CDN), možete:
- 🚀 Ubrzati sajt i do 10 puta
- 🛡️ Odbraniti se od DoS i botnet napada
- 📈 Poboljšati SEO rangiranje
- 💰 Smanjiti troškove hostinga
- 😊 Povećati zadovoljstvo korisnika
Bez obzira da li koristite WordPress, neki drugi CMS ili pišete sajt od nule, keširanje je obavezno za svaki ozbiljan projekat. Počnite sa browser keširanjem, dodajte OPcache, a zatim razmislite o Redis-u i CDN-u.
Vaš sajt će biti brži, sigurniji i korisnici će ga više voleti. A to je ono što zaista broji. 🚀
Nazad na bazu znanja