Komentáře k článku

Nette Framework: Cache

Cache (čtěte „keš“) je označení pro rychlou mezipaměť, do které se duplikují často používaná a přitom těžko dostupná data, aby se přístup k nim urychlil. Ukážeme si, co v této oblasti nabízí Nette Framework

Zpět na článek

11 komentářů k článku Nette Framework: Cache:

  1. Mastodont

    Rejpy rejpy po ránu

    Šťoural obecný Mastodontus albensis má tentokrát dvě připomínky:
    Kešovací obal nad časově náročnou funkcí jsem moc nepochopil, stačí
    jedna funkce namísto dvou (kešování přímo v tělu dané funkce).
    Tagování je prima věcička, dalo by se ovšem zabudovat přímo do storage
    vrstvy a starat se jen o přiřazování tagů. Ale to je opravdu jen
    drobnost :)

    1. plistiak

      Re: Rejpy rejpy po ránu

      Spájanie do jednej funkcie nemusí byť vždy najlepším riešením. Čo ak
      by si po čase chcel pridať ešte nejakú inú funkcionalitu pre prácu
      s cache (šifrovanie, komprimovanie, …)? Myslím, že cache je dobrý adept
      pre vzor Dekorátor

        1. David GrudlAutor příspěvku

          Re: Rejpy rejpy po ránu

          ad Mastodont: snažím se v článku nabádát k tomu, že spojení do
          jedné funkce je obvykle návrhovou chybou. Proto ten příklad a proto zmínka,
          že kešování je „další vrstva“.

          ad memoization: Nette má pro něco takového integrovanou podporu, která
          dojela na to, že na řadě hostingů beží eAccelerator s bugem, který tohle
          znemožňuje :-( Velmi nepříjemná věc, takže se o použití anotací ani
          nezmiňuju. Dokud nevznikne workaround, nebo inkriminovaná verze eAcceleratoru
          nevymizí.

      1. Mastodont

        Re: Rejpy rejpy po ránu

        Cache jako dekorátor je samozřejmě možná, ale psát extra wrapper pro
        každou kešovanou funkci?

  2. keff

    Tagy? Super!

    Jsem rád že se v nějakém frameworku objevila tagovaná cache – už
    dlouho přemýšlím, že by se velmi hodila do Drupalu, jenže tam by
    přidání tagů do cache vyžadovalo přepsání tak 90% jádra a modulů (aby
    svůj kešovaný obsah správně tagovaly).

    Ale zpět k tématu – Davide, přemýšlel jsi i nad tím, že by
    klíčem do cache nebyl jen string, ale množina stringů (tagů)? Umožnilo by
    to třeba cachovat obsah bloků které jsou závislé na uživateli, nějak
    takhle:

    $cache->put(
            array(
                    'module' => 'MyModule',
                    'blockId' => $blockId,
                    'user-id' => $currentUserId
            ),
            $cachedContent,
            $cacheTimeout
            );

    I když, asi by to šlo řešit i nějakým wrapperem nad cache co by tu
    array nějak jednoznačně kanonizoval do stringu (hmm, serialize()?)…

    A jinak, těším se na lambdy v PHP 5.3, to wrapování funkcí mi přijde
    jako děsná duplikace kódu:

    function GetArticles($from, $to) {
    
            $cache->get(
                    'myKey',
                    function ($from, $to) {
                            ...
                            return $articles;
                    }
            );
    }
    1. JD

      Re: Tagy? Super!

      V drupalu:

      Pri ukladani dat: cache_set(‚kaf­ka:article:‘ . $node->nid,
      $data); 

      Pri udalosti, kdy musim invalidovat cache:
      cache_clear_a­ll(‚kafka:arti­cle:‘ . $node->nid) 

      Pripadne, kdyz chci smazat vse s article:
      cache_clear_a­ll(‚kafka:arti­cle:‘, ‚cache‘, TRUE); 

      Jak se to efektivne lisi od tagu?

  3. Karl-von-bahnhof

    Vypnutí cache

    Jde nějak cache vypnout? Nemůžu najít kde. Laděnka při chybách za běhu vyhazuje chyby v cache souborech, kde už jsou některé věci (Latte) přeložené, a nesedí číslo řádku. Většinou to není problém, ale občas přemýšlím, kde co se stalo – třeba když píšu víc kódu a testuji až pak.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3038