Moderní tvorba webových aplikací

O webu

Cacheování obsahu cizí stránky

Jak cacheovat výsledky obsahu staženého z cizí stránky.

2 minuty

Když potřebujeme stáhnout obsah z cizí URL (mimo náš web), jedná se většinou o časově náročnější operaci. Je sice možné nastavit časový limit, ale stejně je lepší výsledek cacheovat, je-li to možné a nepotřebujeme skutečně co nejnovější data.

Požadavek na získání cizí stránky

Cílem je časově náročnou cizí stránku odbourat a použít místo toho cache na vlastním webu.

Postup

Jak na to? Obsah se bude stále získávat funkcí file_get_contents, ale zároveň se bude funkcí file_put_contents ukládat k nám na web.

Ukládání ale proběhne jen v případě, že:

  • kopie na našem webu ještě není vytvořená (funkce file_exist),
  • kopie (soubor cache) už je moc starý (porovná se stáří souboru – funkce filemtime)

V takovém případě (soubor na našem serveru neexistuje nebo je starý) se stáhne a uloží aktuální obsah, jinak se pouze zobrazí výsledek z cache, což bude rychlé.

Řešení

function ziskatSouborCache($url) {
  $platnost = 60 * 60; // 60 s * 60 min = 1 hodina
  $soubor = "cache/" . urlencode($url);

  if (
      file_exists($soubor) && 
      (filemtime($soubor) > time() - $platnost)
     ) {
    // vrátíme obsah z keše
    return file_get_contents($soubor);
  }
  else {
    // obsah se musí stáhnout z cizí URL
    $obsah = file_get_contents($url);
    if ($obsah) {
      // uložení obsahu do cache
      file_put_contents($soubor, $obsah);
    }
    return $obsah;
  }
}

Použití je potom prosté:

echo ziskatSouborCache(
  "http://jecas.cz/ziskani-obsahu-cache"
);

A funkce ziskatSouborCache zařídí, jestli se soubor načte z cizí URL nebo z našeho serveru.

Pro funkčnost výše uvedeného skriptu je nutné vytvořit adresář cache, jinak pokus o uložení souboru skončí chybou.

Související články

Výpis náhodného textu

Jak na stránce náhodně vypsat obrázek, odkaz, reklamu, text nebo cokoliv jiného.

5 minut

Instalace Apache, PHP a MySQL za 30 vteřin

Jak si ve Windows spustit vlastní Apache, PHP a MySQL na svém PC za půl minuty.

7 minut

MySQL přes PDO

PDO je PHP rozhraní pro pohodlnější práci s SQL databásí. Jaké přináší výhody a jak ho používat.

7 minut

Upload obrovských souborů v JS/PHP

Jak umožnit návštěvníkům nahrát soubory jako videa v řádech MB/GB s progress barem.

7 minut

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025