V nedávném příspěvku jsem psal o velmi důležité funkci – cachování na straně PHP skripu, které je užitečné zejména v případě dlouhých databázových dotazů nebo složitě parsovaných vstupních dat třeba z webové služby.

Někdy je nutné data načíst znovu ještě před expirací cache, např. při ladění skriptu. Občas se něco nepovede i při běžném provozu a uživateli bychom měli umožnit obnovení celé stránky pomocí CTRL+F5 i za cenu, že zpracování stránky bude trvat déle.

Použijeme skript původního příkladu, ale do podmínky pro načtení

  1. <?php
  2. if ( !$cachedText = ctiCache( 'narocnyBlok' , 600 ))
  3. ?>

přidáme ještě testování na parametr HTTP_PRAGMA, kterým nám server naznačuje, že si uživatel nepřeje načítat data z cache.

  1. <?php
  2. if (($_SERVER['HTTP_PRAGMA']=='no-cache')  ||   !$cachedText = ctiCache( 'narocnyBlok' , 600 )) {
  3. }?>

Pokud ještě zaměníme v názvu bloku ‘narocnyblok’ za md5 hashované parametry, máme už dokonalý kešovací skript.

  1. <?php
  2. if (($_SERVER['HTTP_PRAGMA']=='no-cache')  || !$cachedText = ctiCache( 'cblok'.md5($vstupniParametry)) , 600 )) {
  3.         zpracujDlouhySkript($vstupniParametry);
  4. }
  5. ?>
Hlasujte pro tento článek:
  • Bookmarky.cz
  • Digg
  • del.icio.us
  • Google
  • Linkuj
  • Vybrali.sme
  • E-mail this story to a friend!
  • Facebook
  • LinkedIn

Komentáře

One Response to “Vylepšené server-side kešování v PHP”

  1. Taco on December 2nd, 2008 0:07

    Ale to je dost dobrý nápad!

Váš komentář: