• Početna
  • O nama
  • LimundoGrad
  • Limundo
  • Kupindo
  • Sigurnost
  • IT
  • Zabava i učenje
  • Plaćanje
  • API
LimundoGrad blog
  • Početna
  • O nama
  • LimundoGrad
  • Limundo
  • Kupindo
  • Sigurnost
  • IT
  • Zabava i učenje
  • Plaćanje
  • API
Home  /  IT  /  PHP preporuke petkom – keširanje
14 decembar 2012

PHP preporuke petkom – keširanje

Autor:Miodrag Stefanović
IT saveti 3 komentara

Keširanje sadržaja

Kod kompleksnijih sajtova i sajtova koji imaju veću posetu, generisanje sadržaja stalnim povlačenjem podataka iz baze može ozbiljno da ugrozi brzinu otvaranja stranica sajta, pa i njegovu generalnu stabilnost. Jedan od načina rešavanja ovog problema je naravno optimizacija SQL upita, ali često je brži i efikasniji način (ili bar komplementarni) – keširanje sadržaja.
Reč Keš (caché) je francuskog porekla i označava nešto što je skriveno, keš memorija je skrivena memorija u kojoj se čuvaju već pripremljeni podaci.

Preuzeto sa xkcd


Keširanje sadržaja je najefikasnije za podatke koji se retko menjaju (na primeru sajta biblioteke to je opis knjige, autor i drugi podaci o knjizi).
Keširanje u najprostijem obliku je proces čuvanja jednom generisane stranice ili dela stranice na nekom medijumu za čuvanje podataka (disk, memorija, …) i njegovo prikazivanje direktnim povlačenjem sa medijuma, umesto ponovnog generisanja nizom upita u bazu podataka.
Samo keširanje je široka tema, ali moja preporuka za manje i srednje zahtevne sajtove je korišćenje Cache_litePear paketa za keširanje na disku

Primer prostog načina korišćenja cache_lite sistema može da izgleda ovako:

<?php    
    require_once ‘Cache/Lite.php’; //Uvuci cache_lite klase
    $options = array(    
       ‘cacheDir’ => ‘cache/ZaStranice/’,    
       ‘writeControl’ => ‘true’,    
       ‘readControl’ => ‘true’,    
       ‘fileNameProtection’ => false,    
       ‘readControlType’ => ‘md5’,
       ‘hashedDirectoryLevel’ => 0,
       ‘lifetime’ => 3600,
       ‘automaticSerialization’ => true
    );//Definicija parametara kesiranja
$cacheOutput = new Cache_Lite_Output($options);//Instanciranje objekta za upravljanje kesiranjem
if(!$cacheOutput->start(“IDStranice”, “GrupaStranice”)) { //Ako sadrzaj nije bio kesiran do sada, generisi ga na standardan nacin ?>

HTML sadržaj

<?php $cacheOutput->end();//Pisanje generisanog sadrzaja na disk radi kasnijeg koriscenja }?>

U gornjem primeru cache_lite objekat proverava da li je sadržaj ranije iskeširan, ukoliko jeste – keširani sadržaj će biti dovučen iz direktorijuma cache/ZaStranice/, a ukoliko nije – generisaće sadržaj podacima iz baze i snimiće ga u dati direktorijum. Keširani sadržaj je moguće ručno invalidirati (svodi se na brisanje keš fajlova) u slučaju da se podaci promene. Takođe je moguče definisati interval vremena nakon koga će se keširani sadržaj automatski invalidirati, u gornjem primeru je to 3600 sekundi (jedan sat).

Keširanje na disku može da izazove probleme u slučaju velikog broja čitanja sa deljenog diska (Npr NFS), i trebalo bi ga izbegavati u tom slučaju (eventualno koristiti lokalne diskove).
U slučaju zahtevnijeg sistema, možete proučiti i koristiti Redis key-value repozitorijum za keširanje u memoriji.

Keširanje sadržaja koji se retko menja je korisno za rasterećenje baze podataka (u slučaju da vam je ona usko grlo).

Ukoliko imate pitanja ili želite da podelite svoja iskustva i preporuke,
tvitamo se na @LimundoGradnja

Fejsbuk komentari

Podeli tekst
Share on Facebook
Share on Twitter
Share on Whatsapp
 Prethodni post Stiže Deda Mraz!
Sledeći post   GLASANJE za najoriginalniji predmet na Kupindu

Povezani postovi

  • 5 predmeta koji će vam olakšati pripremanje trpeze

    6. јануара 2021.
  • Pomoć u odabiru prave knjige za poklon

    10. новембра 2020.
  • Putovanje sa psom

    Kako da vam putovanje sa psom bude lakše

    7. октобра 2020.

komentara

  1. Miroslav
    15. децембра 2012. at 14:35

    Sta sad ti naprica. Meni ovo sve spansko selo :))

  2. Pela
    17. децембра 2012. at 21:29

    A da li je to kesiranje preporucljivo ako se redovno iz brauzera brise kes memorija zajedno sa istorijom pregledanja??? da li je moguce da neka web aplikacija koristi duple baze jedna na racunaru korisnika = to bi bila kes memorija a druga na serveru-mysql… radi brzeg otvaranja i postojanja baze i kad server neradi i obratno da se po ukljucenju servera refreshuje i obnovi kes memorija ukoliko je korisnik izbrisao?

  3. Miodrag Stefanović
    26. јануара 2013. at 16:43

    Kes memorija u browseru je na klijentskoj strani i nije vezana za kesiranje na serverskoj strani koje je opisano u ovom blogu. Kesiranje na serveru je uvek preporucljivo zbog ustede resursa i povecanja brzine.
    Sto se tice drugog pitanja – generalno ako server ne radi nece raditi ni web aplikacija koja se “vrti” na njemu, tako da je prakticno jako tesko napraviti funkcionalnu arhitekturu koju si opisao.

Ostavite komentar

Advertisement

Popularno na Kupindu

U potrazi ste za udžbenicima za osnovnu ili srednju školu? Pogledajte na Kupindu:

➡️ Udžbenici za osnovnu školu
➡️ Udžbenici za srednju školu

Ovde ćete pronaći udžbenike za svaki razred i izdanja gotovo svih izdavača koje današnje škole traže. Uštedite na kupovini udžbenika.

  • Najpopularnije
  • Poslednji postovi
  • Za sledećih 15 Vladimir Nikolić 22. маја 2021. Limundo 603
  • Hoću da znam šta je neko kupio i prodao Vladan Jović 16. децембра 2013. LimundoGrad 355
  • Kako da ocenim prodavca (a da to bude ispravno)? Ana Mladenović 12. марта 2013. LimundoGrad 248
  • Veštačko nuđenje – istine i laži Vladan Jović 11. јуна 2013. Limundo 234
  • Cenovnik + opcije + brzina Aleksandra Vuković 15. марта 2012. Blog 211
  • dopuni Limundo račun i tokom praznika
    Dopuni Limundo račun i tokom praznika Jovana Marković 21. априла 2022. Plaćanje 0
  • Ponudi manje – nova opcija [test] Vladimir Nikolić 24. јануара 2022. Blog, Limundo 45
  • Otvorena pozicija – PHP Web Developer Vladimir Nikolić 23. децембра 2021. Uncategorized 0
  • Visa akcija za plaćanje predmeta
    Visa akcija za plaćanje predmeta i dopunu računa Vladimir Nikolić 22. новембра 2021. Limundo, Plaćanje 18
  • Mogućnost plaćanja karticom i novi uslovi Vladimir Nikolić 22. новембра 2021. Limundo, Plaćanje 7

Skorašnji komentari

  • Dragana на Pre nego što usvojite macu
  • Anja Divković на Prevareni ste? Vraćamo vam novac!
  • Vladimir Nikolić на Za sledećih 15
  • Zlata Đukić на Prevareni ste? Vraćamo vam novac!
  • Vladimir Nikolić на Za sledećih 15

Vremeplov

© 2008. LimundoGrad d.o.o. Creative Commons License Ovo delo je licencirano pod uslovima licence Creative Commons Autorstvo-Nekomercijalno-Bez prerada 4.0 Međunarodna licenca
LimundoGrad koristi kolačiće u statističke i marketinške svrhe. Nastavkom korišćenja sajta smatramo da ste pristali na upotrebu kolačića.OKViše informacija