Start » WordPress » Brzina & Optimizacija » Kako konfigurisati LiteSpeed WordPress keširanje?

Kako konfigurisati LiteSpeed WordPress keširanje?

Iz mog iskustva, LiteSpeed daje najbolje rezultate kada je u pitanju keširanje (i generalno brzina rada) WordPress sajtova. Posebni članci objašnjavaju keširanje sajtova generalno, i keširanje WordPress sajtova. U ovom članku objasniću instalaciju i podešavanje samog LiteSpeed Cache plagina.
Shvatiti kao – šta mi se do sada dobro pokazalo, ništa manje, ništa više.


Sadržaj:

  1. Šta je to keširanje WordPress sajta?
  2. Šta je to LiteSpeed Cache?
  3. Konfigurisanje LiteSpeed Cache plagina
    3.1. General opcije
    3.2. Cache opcije
    3.3. CDN opcije
    3.4. Image Optimization opcije
    3.5. Page Optimization opcije
    3.6. Database opcije
    3.7. Crawler opcije
    3.8. Toolbox opcije
  4. Testiranje konfiguracije
  5. Zaključak


1. Šta je to keširanje WordPress sajta?

Ovaj članak koji sada čitate ne postoji na serveru kao takav. Sav tekst se nalazi u bazi, a sve slike u direktorijumu na serveru ( “wp-content/uploads/2021/10/slika-123.jpg” ).

Da bi se ovaj članak prikazao, server mora da pokrene PHP, koji čita MySQL bazu i na osnovu pročitanih podataka kreira ovu stranicu, onako kako sam je dizajnirao, ubacujući slike i tekst tamo gde treba.

WordPress ovo radi za svaku posetu svake stranice. To dosta opterećuje server i usporava rad sajta – pogotovo ako ima puno posetilaca.

Keširanje je u suštini pre-kreiranje stranice, tako da stranica stoji napravljena i spremna da se prikazuje posetiocima. Tj. u tom slučaju se zaista pravi “litespeed-wordpress-konfiguracija.html” fajl, ili nešto veoma nalik tome, pa vam se to “podmeće” kada dođete na sajt i “otvorite” ovaj članak.

To može ići i korak dalje – tako da se naloži browser-u posetioca da kod sebe sačuva kopije slika i ostalih “teških” fajlova koji se sporo učitavaju, kako bi pri ponovnim posetama istih stranica učitavanje išlo brže.

Šta ako ispravim slovnu grešku, dodam pasus, ili neko postavi komentar u dnu strane? Tada se keširana verzija stranice mora re-kreirati, da prikazuje aktuelnu verziju. To se zove “invalidacija keša,” ili “brisanje keša.” Prosto rečeno, server govori svim posetiocima koji su već bili posetili stranicu – “hej, morate učitati novu verziju, ažurirali smo” (novi posetioci neće ni imati prethodnu verziju snimljenu u svom browser-u).

Dobar plagin za keširanje će o svemu ovome brinuti automatski. Kreiranje keša i brisanje keša za stranice koje su izmenjene (ako obrišete ceo keš, server će biti opterećen dok ne kreira ponovo keš za sve stranice).

Ako vas zanima više detalja, vidite moj članak koji objašnjava keširanje, minimizaciju i kompresiju.

– Sadržaj –


2. Šta je to LiteSpeed Cache?

LiteSpeed Cache (wp.org link) je verovatno najbolji plagin za keširanje WordPress sajtova.

Da bi radio kako treba, traži da server na kojem vam je sajt bude LiteSpeed. Mnogi hosting provajderi danas to nude, ali ne svi. Ako vam server nije LiteSpeed, a ne želite menjati hosting provajdera, alternativni plaginovi su opisani u članku Keširanje WordPress sajta.

– Sadržaj –


3. Konfigurisanje LiteSpeed Cache plagina

LiteSpeed Cache radi odlično čim ga instalirate, “iz kutije” što se kaže, ali performanse se mogu još poboljšati uz malo podešavanja. 🙂 Procedura za instalaciju je ista kao i za svaki drugi plagin (kako instalirati WordPress plagin).

Ko ne želi čitati, može skinuti gotova podešavanja u poglavlju 3.8.2.

LiteSpeed Cache plagin ima 8 opcija u glavnom meniju:

Kategorije glavnog menija LiteSpeed Cache plagina
Kategorije glavnog menija LiteSpeed Cache plagina
Slika 1

Svaka opcija glavnog menija ima dva, do devet pod-menija:

Meni opcija "General" ima dva pod-menija - "[1] General Settings," i "[2] Tuning"
Meni opcija “General” ima dva pod-menija – “[1] General Settings,” i “[2] Tuning”
Slika 2

Sve je lepo složeno po logičkim celinama. Sad ću proći kroz sve opcije glavnog menija (od vrha, ka dnu), ulazeći u svaki pod-meni (s leva na desno) i objasniti svaku opciju (od gore, ka dnu).

Pisaću naziv opcije, preporučeno podešavanje, uz kratak komentar ponegde.

Neke opcije nemaju funkciju ako neka od opcija koja je iznad njih nije aktivirana. Kako bi ovo uputstvo bilo kraće, kod takvih opcija stavljaću OFF, ako “glavnu” opciju isključujem. Znam da podešavanje nije bitno dok god se ne aktivira “roditeljska” opcija.

Pre nego što počnemo – ovo su opcije koje su se meni dobro pokazale za veće WordPress sajtove sa sve AMP verzijom, i manje WooCommerce sajtove. Za veće WooCommerce sajtove se treba dublje upustiti u ESI podešavanja i videti koje sve tačno stvari treba da budu u “private” kešu, a koje ne moraju.

Snimite izmene (nakon podešavanja svake tranice menija) i dobro sve istestirajte.

– Sadržaj –


3.1. General opcije

[1] General Settings

  • Automatically Upgrade – OFF (uvek prvo testirajte apdejte na stejdžing okruženju).
    Primer za LiteSpeed apdejt koji je napravio problem, i rešio ga narednim apdejtom. Trebali su mi sati da utvrdim šta zeza. Srećom zahvaljujući mojoj politici apdejta, to se nije desilo na produkcionom sajtu.
  • Domain Key – ne koristim ovo. Optimizujem slike pre upload-a, a za CDN preferiram Cloudflare.
  • Guest Mode – OFF
  • Guest Optimization – OFF
  • Server IP – unesite IP adresu svog hosting servera.
  • Notifications – OFF

[2] Tuning

  • Guest Mode User Agents:
Lighthouse
GTmetrix
Google
Pingdom
bot
PTST
HeadlessChrome
  • Guest Mode IPs – ostavite podrazumevane vrednosti.

– Sadržaj –


3.2. Cache opcije

[1] Cache

  • Enable Cache – ON
  • Cache Logged-in Users – ON
  • Cache Commenters – ON
  • Cache REST API – ON
  • Cache Login Page – ON
  • Cache favicon.ico – ON
  • Cache PHP Resources – ON
  • Cache Mobile – OFF

Ostale opcije se mogu preskočiti, do Drop Query String, gde vredi uneti:

fbclid
gclid
utm*
_ga

[2] TTL

  • Default Public Cache TTL – 6048000 (10 weeks)
  • Default Private Cache TTL – 3600
  • Default Front Page TTL – 604800 (1 week)
  • Default Feed TTL – 604800
  • Default REST TTL – 604800
  • Default HTTP Status Code Page TTL (podrazumevane vrednosti su OK):
403 3600
404 3600
500 3600

[3] Purge

  • Purge All On Upgrade – ON
  • Auto Purge Rules For Publish/Update – nemojte ništa čekirati, inače će ažuriranje objavljenih stranica jako opterećivati server. Ako se pokaže potreba, pri većim izmenama, možete obrisati sav keš kada ih završite (mada je to retko kad potrebno po mom iskustvu), odlaskom u “Toolbox” meni i klikom na “Purge All” opciju. Ako baš insistirate, možete čekirati “Front Page” i “Home Page”.
  • Serve Stale – OFF

Preskočite ostale opcije i ostavite Purge All Hooks na podrazumevanim vrednostima:

switch_theme
wp_create_nav_menu
wp_update_nav_menu
wp_delete_nav_menu
create_term
edit_terms
delete_term
add_link
edit_link
delete_link

[4] Excludes

  • Do Not Cache URIs – ovde sam dodao stranice za pretragu sajta:
/search_gcse/
/?q
/?s
  • Do Not Cache Query Strings – ovde u polje ide moj Google AdSense publisher ID broj. Server ne treba ni da pokušava keširati reklame, one se svakako dinamički stalno osvežavaju, za svaku posetu.

Sve ostale opcije ostavljam praznim / dečekiranim.

[5] ESI

  • Enable ESI – OFF

Ovo čini sve ostale opcije ispod disejblovanim, kako god da ih konfigurišete.

ESI (eng. Edge Side Includes) praktično omogućava da ne brišete iz keša ništa što nije neophodno da se briše, a bez rizika da jedan kupac vidi stranicu sa nalogom, ili korpom, drugog kupca (prosto rečeno, ako se sve podesi kako treba).

Za veće WooCommerce sajtove, vredi uključiti ESI i onda veoma pažljivo, sa puno testiranja, podesiti ESI Nonces opcije. Na primer, za moju prodavnicu, koja koristi PayPal za naplatu, vredi tu uneti ovu liniju (pored mnogih drugih):
“woocommerce_ppec_payer_id_live_* private”
Tu koristim zvezdicu kao džoker, da sve što počinje gore unetom strukturom kešira kao “privatno,” za svakog posetioca posebno.

LiteSpeed baza znanja je fenomenalna i tamo je i ESI lepo objašnjen (na engleskom, naravno).

[6] Object

  • Object Cache – ON
  • Method – Redis
  • Host – localhost
  • Port – 6379 – proverite sa provajderom ako je Redis na drugom portu.
  • Default Object Lifetime – 360

Proverite da li Redis keširanje objekata radi:

Redis keširanje objekata ne radi (gore), i radi kako treba (gore)
Redis keširanje objekata ne radi (gore), i radi kako treba (gore)
Slika 3

Naredne opcije mogu biti prazne, dok Global Groups i Do Not Cache Groups LiteSpeed sam popuni kako treba (barem po mom iskustvu). Ali treba da aktiviramo poslednje tri opcije:

  • Persistent Connection – ON
  • Cache WP-Admin – ON
  • Store Transients – ON (ovo podešavanje ne igra ulogu kada je aktivno Cache WP-Admin).

[7] Browser

  • Browser Cache – ON
  • Browser Cache TTL – 6048000

[8] Advanced

Sve prazno, sve na OFF.

[9] WooCommerce

  • Use ESI for Cart – ako ste uključili i podesili ESI, onda ima smisla da uključite ovu opciju. Inače nema uticaja.
  • Product Update Interval – Purge product on changes to the quantity or stock status. Purge categories only when stock status changes.
  • Use Front Page TTL for the Shop Page – ON
  • Privately Cache Cart – ON

– Sadržaj –


3.3. CDN opcije

[1] CDN Settings

Sve na OFF. Ručno podešavam Cloudflare, a ne koristim QUIC.cloud CDN – sa svim prednostima i manama tog izbora. Kada hiljade dnevnih poseta postanu stotine hiljada, verovatno ću implementirati CDN preko pod-domena, ili preko Cloudflare plaćene opcije, kako bih dodatno rasteretio server. Za sada bi to bila samo nepotrebna komplikacija – besplatni Cloudflare servira većinu slika sa svojih edge servera za keširanje.

[2] Manage

Kako sam objasnio iznad – ovde ništa ne diram.

– Sadržaj –


3.4. Image Optimization opcije

[1] Image Optimization Summary

Ako ste povezali sajt sa QUIC.cloud servisom, ovde možete “ručno” pokrenuti optimizaciju slika klikom na dugme Gather Image Data. Kada se to završi, u dnu se nalazi dugmence “Remove Original Image Backups” kojim se brišu originalne verzije slika (neoptimizovane) kako bi se uštedelo na prostoru. Ovo će sve biti jasnije kad vidimo narednu opciju:

[2] Image Optimization Settings

Meni su ovde sve opcije na OFF. Ali objasniću podešavanja koja su mi se dobro pokazala za one koji žele automatsku optimizaciju slika. LiteSpeed ovo radi odlično, i menja sve ostale plagine za optimizaciju slika (Smush, EWWW Image Optimizer i slične).

  • Auto Request Cron – ON
  • Auto Pull Cron – ON
  • Optimize Original Images – ON
  • Remove Original Backups – ON (stavite ovo na OFF ako želite proveriti prvo da li ste zadovoljni izgledom optimizovanih slika, po mom iskustvu LiteSpeed odlično radi posao)
  • Optimize Losslessly – OFF
  • Preserve EXIF/XMP data – OFF
  • Create WebP Versions – OFF. Ostavljam ovo isključeno dok većina browser-a ne postane kompatibilna sa WebP formatom. Isto važi za sve WebP opcije ispod. Ako se odlučite za WebP, onda ih sve stavite na ON.
  • Image WebP Replacement – OFF
  • WebP Attribute To Replace – LiteSpeed ovo sve sam lepo popuni
  • WebP For Extra srcset – OFF
  • WordPress Image Quality Control – 85. Ovo je dobra kompresija, sa zadržavanjem sasvim pristojnog kvaliteta slika. Ako želite još manju veličinu fajlova slika, uz OK kvalitet, možete staviti 80. Pri tome: 75 je minimum ispod kojeg slike izgledaju grozno, a preko 90 apsoutno nema smisla ići jer se samo dobijaju ogromni fajlovi, bez vidnog dobitka u kvalitetu slika.

– Sadržaj –


3.5. Page Optimization opcije

Ove opcije mogu dati povećanje brzine. Samo pazite – mogu i ometati pravilan rad sajta, u zavisnosti od plaginova i tema koje koristite.

Setap koji preporučujem u nastavku nije najbrži mogući (mada i dalje veoma dobar), ali radi odlično sa svime kombinacijama tema, page builder-a i plaginova koje sam do sada bacio na probu. Mislim da je dobra početna tačka za većinu sajtova. Posle možete probati uključiti još opcija. Uključujte jednu po jednu opciju – i testirajte posle svake. Dobro i detaljno sve testirajte.

[1] CSS Settings

  • CSS Minify – ON
  • CSS Combine – OFF. Objašnjenje na engleskom zašto CSS Combine više nije dobra ideja.
  • Generate UCSS – OFF. Uključite ako koristite QUIC.cloud.
  • UCSS Inline – OFF
  • CSS Combine External and Inline – OFF
  • CSS HTTP/2 Push – ON – opcija ukinuta od LiteSpeed Cache verzije 4.3.3.
  • Load CSS Asynchronously – OFF
  • CCSS Per URL – OFF. Staviti na ON ako koristite page builder i imate problema sa prikazom stranica pravljenih u njemu.
  • Inline CSS Async Lib – ON
  • Font Display Optimization – Swap

[2] JS Settings

  • JS Minify – ON
  • JS Combine – OFF
  • JS Combine External and Inline – OFF
  • JS HTTP/2 Push – ON – opcija ukinuta od LiteSpeed Cache verzije 4.3.3.
  • Load JS Deferred – OFF

[3] HTML Settings

  • HTML Minify – ON
  • DNS Prefetch – ovo ostavljam prazno
  • DNS Prefetch Control – OFF
  • HTML Lazy Load Selectors – ostavljam prazno
  • Remove Query Strings – OFF
  • Load Google Fonts Asynchronously – ON
  • Remove Google Fonts – OFF
  • Remove WordPress Emoji – OFF
  • Remove Noscript Tags – OFF

[4] Media Settings

  • Lazy Load Images – OFF. Kad se stranica učita, hoću da mi se učitala. Jako ne volim kada, dok čitam članak, moram čekati da učita jednu po jednu sliku. Ovakvo podešavanje daje lošije rezultate na testovima brzine, ali mislim da je bolje za posetioce.
  • Basic Image Placeholder – ostavljam ovo prazno.
  • Responsive Placeholder – ON. Ako je Lazy Load Images na OFF, ova opcija ne radi ništa.
  • Responsive Placeholder SVG – Važi isto kao i za opciju iznad. Default unos je OK.
  • Responsive Placeholder Color – #cfd4db. Ili izaberite boju koju želite.
  • LQIP Cloud Generator – OFF. Traži QUIC.cloud. Ako štedite na prostoru, onda štedite – neka stoji placeholder dok se slika ne učita.
  • LQIP Quality – Ne radi ništa ako je opcija LQIP Cloud Generator stavljena na OFF. Inače, default vrednost 4 je OK.
  • LQIP Minimum Dimensions – važi isto što i za opciju iznad.
  • Generate LQIP In Background – OFF. Stavite na ON ako se koriste LQIP Cloud Generator i Lazy Load Images.
  • Lazy Load Iframes – OFF
  • Add Missing Sizes – OFF
  • Inline Lazy Load Images Library – ON

[5] Media Excludes

Ove opcije stoje sve prazne, ili sa default podešavanjima (za one koje imaju default podešavanja).

Za one koji vijaju 100% na testovima brzine, ili imaju milionske posete na sajtu:

Kada aktivirate većinu (ili sve) optimizacije u prethodnim sekcijama Page Optimization opcija, vrlo je verovatno da vam sajt neće raditi kako treba. Međutim, ovde možete “ručno” isključiti optimizacije samo za pojedine stvari. Uz dovoljno strpljenja i testiranja da pronađete šta tačno treba izbaciti iz optimizacija, vaš sajt će raditi kako treba, uz najveću moguću brzinu.

Ovo nije zamena za izbor kvaltetne WordPress teme i plaginova (i što manje plaginova – ne, ne treba vam plagin za povezivanje Gugl Analitike sa sajtom).

[6] Localization

  • Gravatar Cache – ON
  • Gravatar Cache Cron – OFF
  • Gravatar Cache TTL – 6048000 (10 weeks)

[7] Tuning

Za ove opcije generalno važi isto što i za Media Excludes opcije. Ipak, ima par stvari koje mislim da svakako treba podesiti, pa ću ih navesti:

  • Optimize for Guests Only – ON
  • Role Excludes – Ovde sve ostavljam prazno (de-čekirano). Tako lakše i brže primetim ako ima nekih problema dok radim na sajtu.

– Sadržaj –


3.6. Database opcije

[1] Manage

Nakon većih izmena sadržaja, vredi doći ovde i kliknuti na Clean All dugme.

LiteSpeed optimizacija baze
LiteSpeed optimizacija baze
Slika 4

Database Table Engine Converter – ako postoji tabela koja koristi MyISAM engine, kliknite na opciju “Convert to InnoDB.” Uradite to sa svim tabelama.

InnoDB je manje od dva zla, generalno - konvertujte u InnoDB, imamo kolačiće! :)
InnoDB je manje od dva zla, generalno – konvertujte u InnoDB, imamo kolačiće! 🙂
Slika 5

[2] DB Optimization Settings

  • Revisions Max Number – 0
  • Revisions Max Age – 0

Ovo ostavljam ovako, pošto nakon izmena “ručno” optimizujem bazom kako je prikazano na slici 4.

– Sadržaj –


3.7. Crawler opcije

Generalno ovde sve ostavljam na OFF ili na default podešavanjima. Ostavljam da se keširane verzije stranica kreiraju po potrebi, kada naiđe prvi posetilac. Možete ovo aktivirati ako očekujete ogroman nagli porast broja poseta (neka kampanja i slično) većem broju stranica vašeg sajta (kako ne biste svaku ručno otvarali da bi se kreirao keš).

Meni to ne treba, samo bi opterećivalo server pravljenjem keširanih verzija i za stranice koje se veoma retko posećuju (ako ih ručno ne stavim na spisak za isključivanje iz keširanja, što opet nema smisla i potrebe). Stoga, opcije za koje proveravam da su podešene su sledeće:

[4] General Settings

  • Crawler – OFF

[6] Sitemap Settings

  • Drop Domain from Sitemap – ON. Ako ste omogućili Crawler, a sitemap vam sadrži i linkove sa drugog domena, onda ovo stavite na OFF.

– Sadržaj –


3.8. Toolbox opcije

[1] Purge

Dugme Purge All je zgodno ako želite “ručno” invalidirati (obrisati) keširane verzije stranica.

Ispod njega se nalazi meni u kojem možete brisati keš samo određenih stranica (po kategoriji članaka, konkretnom URL-u i slično).

[2] Import / Export

Ovde možete eksportovati sva svoja podešavanja u jedan fajl, klikom na dugme Export. Tada će vas pitati gde na svom računaru želite snimiti .data fajl, i pod kojim imenom.

Na ovaj način možete lako “prebaciti” podešavanja sa staging verzije na produkcionu. Ovo se radi klikom na Choose File dugme, kada vam nudi da na svom računaru izaberete fajl sa eksportovanim podešavanjima. Nakon toga treba kliknuti na Import – i gotovo, sva vaša podešavanja su “prebačena” na novi sajt. 🙂

Ovo je izuzetno praktično.

Da olakšam svima život, napravio sam eksport podešavanja kako su prikazana u ovom članku. Jedino nisam uneo IP adresu hosting servera – tu svako mora uneti IP adresu svog servera (General opcije).

Ovde možete download-ovati BikeGremlin LiteSpeed podešavanja. Možete otpakovati .zip fajl koji ste skinuli, pa importovati podešavanja u svoj LiteSpeed Cache plagin.

Važna napomena: rizično je ovako skidati stvari sa Interneta i postavljati ih na svoj sajt. Bilo bi puno sigurnije da LiteSpeed napravi nešto slično na svom zvaničnom sajtu (sa više različitih tipičnih profila podešavanja). Najsigurnije je da sve konfigurišete ručno, prateći uputstva u ovom članku, na staging verziji sajta. Druga, malo manje sigurna opcija, je da moja podešavanja importujete na staging sajt. Kako god da šta menjate, uvek je sigurnije na staging veziji, pa posle podešavanja eksportovati i “prebaciti” na produkcioni sajt.

[3] Edit .htaccess

Cool – možete menjati sadržaj .htaccess fajla iz WordPress-a, ako želite i znate šta radite. 🙂

[4] Heartbeat

Sve ovo ostavljam na OFF. Ostavljam da se stvari “okidaju” posetama, a server nek miruje kada ih nema.

[5] Report

Osnovne informacije koje se mogu proslediti ekspertu radi rešavanja problema.

[6] Debug Settings

Sve na OFF ako sajt radi. Aktivirajte debug opcije samo da biste videli šta zeza u slučaju problema (idealno, na staging okruženju).

[7] Log View

Ovde ćete moći videti logove, ako ste aktivirali logovanje u Debug Settings.

[8] Beta Test

Ako želite pomoći razvoj LiteSpeed Cache plagina testiranjem beta verzija i slanjem povratnih informacija developerima, izaberite neku od ponuđenih opcija (lepo je sve objašnjeno, mislim da nema potrebe da ovde ulazim u detalje).

– Sadržaj –


4. Testiranje konfiguracije

Svaku izmenu na sajtu je najsigurnije raditi na staging okruženju, tu sve testirati, pa tek onda prebaciti na produkciju – i tamo, ponovo, za svaki slučaj testirati.

Kako testirati? Dobar početak je da se otvori anoniman prozor u Chrome browser-u (CTRL+SHIFT+N), pritisne taster F12, i onda otvori (poseti) neka od stranica sajta.

Trebalo bi da u Network opcijama, kad kliknete na stranicu sajta, stoji “x-litespeed-cache: hit”. Ako se to ne vidi pri prvoj poseti, nakon osvežavanja strane (taster F5), trebalo bi da se pojavi, ako je sve u redu.

Testiranje LiteSpeed Cache plagina
Testiranje LiteSpeed Cache plagina
Slika 6

Ako želite biti baš temeljni, možete uraditi sledeće (opet, na staging verziji sajta):

  • Preko FTP-a, zamenite neku od slika na stranici koju testirate nekom drugom slikom, ali sa istim imenom fajla (snimite kopiju originalne slike pre toga).
  • Osvežite prikaz stranice (F5).

Ako se nova slika prikaže umesto stare, znači da vam keširanje ne radi kako treba. Ovo radite iz “anonimnog” browsera kako sam objasnio na početku ovog poglavlja, sa aktivnom opcijom “Disable cache” kako je prikazano na slici 6 iznad.

Testirajte da li sve stranice i funkcije sajta rade normalno. Ako se posetioci loguju na vaš sajt, testirajte i kao ulogovani posetilac.

– Sadržaj –


5. Zaključak

Kao što sam rekao na početku, LiteSpeed radi odlično i sa svim default podešavanjima. Napravljena su tako da osetno ubrzaju rad sajta, a bez rizika da nešto ne radi kako treba. Ovaj članak služi ako to želite da malčice dodatno poboljšate.

Sve dopune, unapređenja, a pogotovo ispravke su više nego dobrodošle – koristite polje za komentare ispod.

Ako imate nekih pitanja, odlično mesto je WordPress sekcija LowEndSpirit foruma.

– Sadržaj –

Komentiraj

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Google izbor sadržaja: