Udnyt caching for hurtigere loadhastighed af din webshop

Shoporama har en rigtig smart blok-caching funktion, og den virker super fint.

(en lille advarsel – dette indlæg er lidt udviklernørdet, men effekten af at gøre dette er hurtigere hjemmeside og højere konverteringsrater). Det er nørderne fra Ørskov Web der er kommet frem til denne smarte løsning.

Hvis man bare bruger blok-caching som standard på dynamiske udtræk (f.eks. en kategori), så gemmer den kun første kategori man tilgår i cachen og serverer den på ALLE kategori sider.

Og det er jo selvsagt ikke så smart.

Så derfor har vi lavet følgende funktion, der tager højde for forskellige kategorier og hvilken side (paginering) man befinder sig på.

Det foregår lidt forskellige alt afhængigt af om man er på en kategori, landingsside, eller normal side.

KATEGORI

Vi opretter en cache variabel som hedder: CategoryId_SideNummer, hvor CategoryId og SideNummer er dynamiske

<{assign var="cacheName" value=$category->getCategoryId()|cat:'_'|cat:$get.p}>

Vi opretter endnu en cache variabel til vores cache data

<{assign var="cacheNameData" $category->getCategoryId()|cat:'_data_'|cat:$get.p}>

Vi beder serveren om at hente vores unikke cache-variabel

<{get_cache name=$cacheName ttl=3600 assign="cacheNameData"}>

Hvis den finder den, så serverer den den

<{if $cacheNameData}><{$cacheNameData}>

Ellers laver den en ny caching af vores dynamiske indhold, og gemmer den under vores unikke navn

<{else}>
<{cache name=$cacheName}>
Dit dynamiske indhold f.eks. et produkt loop
<{section name="i" loop=$products}>
<{include file="inner_product.html" product=$products[i]}>
<{/section}>
<{/cache}>
<{/if}>

Vores caching variabler skal hedde lidt noget andet når vi er på andre typer sider end kategorier.

LANDINGSSIDE

<{assign var="cacheName" value=$landing_page->getLandingPageId()|cat:'_'|cat:$get.p}>
<{assign var="cacheNameData" $landing_page->getLandingPageId()|cat:'_data_'|cat:$get.p}>

TEKSTSIDE

<{assign var="cacheName" value=$page->getPageId()}>
<{assign var="cacheNameData" value=$page->getPageId()|cat:'_data'}>

PRODUKT

<{assign var="cacheName" value=$product->getProductId()}>
<{assign var="cacheNameData" value=$product->getProductId()|cat:'_data'}>

Det blev en smule teknisk, men jeg anbefaler at hvis du vil have en hurtigere Shoporama shop, så går du i krig med dette. Er det for udvikleragtigt, så kontakt mig, så laver vi et tilbud på at få det optimeret for dig.

Kommentarer

  1. Nicolai Teglskov skriver

    Skal koden bare sættes ind øverst på hhv.
    category.html for kategorier,
    landing_page.html for landingssider,
    page.html for statiske sider
    og product.html for produkter?

    • Bjørn Nyborg skriver

      Hej Nicolai, hvis du vil cache alt indhold i filen, så skal du indsætte det øverst i filen ja. Og der hvor der står “Dit dynamiske indhold…” skal du have indholdet af filen, og så afslutte filen med:

      Håber det gav mening! 🙂

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *