Yderligere caching og performance

Ud over at vi har vores generelle caching der fungerer på sidebasis, og som bliver deaktiveret i det øjeblik en bruger logger ind, eller lægger noget i kurven, så har vi også en caching-funktion på blok-niveau som man selv skal implementere.

Den er brugbar hvis man fx har en masse smarty-kode til at rendere en menu, eller andre komplicerede ting – de ting kan nemlig sløve din shop en lille smule, da de måske skal lave en masse opslag. Afhængig af hvad du renderer selvfølgelig ..

<{get_cache name="my_cache" ttl=3600 assign="my_cached_data"}>

<{if $my_cached_data}>

  <{$my_cached_data}>

<{else}>

  <{cache name="my_cache"}>
    <!-- Her skal du skrive din egen kode -->
  <{/cache}>

<{/if}>

De to funktioner og blok-element du skal lægge mærke til er <{cache}> og <{get_cache}>.

<{cache}> bruges til at omkrandse den kode du vil gemme i din cache, og den skal have argumentet name=”…” for at angive navnet på cachen.

<{get_cache}> henter din cache ud, og den skal også have en name=”…” for at vide hvilken cache den skal hente. ttl=3600 er en Time To Live på din cache i sekunder, og hvis din cache er ældre end det du angiver kommer der intet resultat. Assign er valgfri, men anbefales. Den bruges til at assigne dit cachede data til en variable du senere kan checke på.

For at det virker optimalt skal du gøre som ovenstående, hvor du assigner din cache til en variable, og så checker om den er til stede. Er den til stede kan du vide dit cachede data. Ellers skal det renderes igen.

Update: Nørderne fra ClickStarter har leget med det og fundet en smart løsning på dynamisk indhold. Du kan se deres løsning her.