Förstå caching i OpenCart

Nuförtiden har du inte råd att gå offline även om det är några minuter om du arbetar med en global publik eftersom det ger din konkurrent en chans att bevisa att de ligger framför dig.

Caching är en viktig faktor om du arbetar med webbutveckling. Det hjälper verkligen att avlasta den tunga hissen en webbserver måste göra för att betjäna tusentals förfrågningar om inte miljontals samtidigt. Det finns massor av alternativ som finns tillgängliga idag, vilket ger en prestationsökning till din webbapplikation, men grundläggande koncept av caching är detsamma.

Syftet med caching

Borta är de dagar då du bara behövde bygga en statisk HTML-webbplats som innehöll ett par sidor och du var klar. I så fall behövde du inte oroa dig för de samtidiga förfrågningarna och den stora trafiken som genererades på din webbplats, eftersom det är så mycket snabbare att skicka dessa statiska HTML-sidor jämfört med de dynamiska webbsidorna som tar en hel del serverresurser att bygga sig själva.

En typisk dynamisk sida gör mycket, från att fråga en databas för att hämta data från leverantörer av tredje part. Det kräver mycket att visa en sida som innehåller mycket information i olika format. Specifikt har du inte råd att fråga databasen för att hämta samma komplexa information för varje förfrågan som trafiken ökar. Det kommer snart att göra dina servrar trånga för resurser, och innan du kan göra något kommer de att vara borta!

Så du behöver något däremellan som snabbar upp saker, och det är där caching kommer in i bilden. Tanken med cachning är väldigt enkel - du lagrar de beräknade / formaterade resultaten någonstans och hämtar dem vid behov så att du inte behöver göra det igen. Att "någonstans" kan vara någonstans: filsystemet, minnet eller själva databasen.

Det finns också många alternativ för caching-memcached, Redis, Larn, och mer. Du kan använda dem enligt dina krav, och ibland hjälper kombinationen av flera komponenter också att förbättra prestanda exponentialt.

Eftersom det skulle ta en komplett serie för att förklara insatserna för cachning, och det är också något utanför ramen för den här artikeln, kommer vi tillbaka till OpenCart-sammanhanget och fortsätter med det i nästa avsnitt.

Vi använder den senaste versionen av OpenCart, så se till att du har installerat det för att följa koden.

Hur Basic Caching fungerar i OpenCart

Caching-biblioteket finns i själva kärnan, så låt oss genast utforska det. Gå vidare och öppna system / bibliotek / cache.php filen i din favorit textredigerare.

cache = ny $ class ($ expire);  annars exit ('Fel: Kunde inte ladda cacherdrivrutin'. $ drivrutin. 'cache!');  public function get ($ key) return $ this-> cache-> get ($ key);  public function set ($ key, $ value) return $ this-> cache-> set ($ key, $ value);  public function delete ($ key) returnera $ this-> cache-> delete ($ key); 

Från och med konstruktorn initierar den cacherdrivrutinen som passerar i konstruktörargumentet. Om klassen är tillgänglig för den begärda caching-adaptern, kommer den att initieras till $ This-> cache egendom, annars kommer det att avslutas med felmeddelandet. Vi ser de olika caching-adaptrarna i nästa avsnitt.

Det finns också tre omslagsfunktioner som används för att utföra alla operationer relaterade till caching.

De skaffa sig Metoden används för att hämta värdet från cacheminnet.

$ This-> cache-> får ($ key);

De uppsättning Metoden används för att lagra värdet i cacheminnet.

$ this-> cache-> set ($ key, $ value);

De radera Metoden används för att ta bort nyckel- / värdekartan från cacheminnet.

$ This-> cache-> Delete ($ key);

Så det är verkligen enkelt att använda cachingfunktioner i dina moduler också.

Det finns många platser i fronten där data hämtas från cacheminnet. Låt oss lista några av dem:

  • Senaste produkterna
  • bästsäljare produkter
  • lista över tillverkare
  • lista över länder
  • lista över valutor
  • lista över zoner
  • lagringsinställningar

När det gäller filhantering hittar du alla cachefiler som är lagrade under system / cacheminne katalogen. Även om OpenCart rensar cacheminnet vid lämpliga händelser, kan du också rensa dessa filer manuellt för att hämta de senaste data.

Så det är det så långt som caching wrapper är berörda. I nästa avsnitt ser vi de olika cache-adaptrar som finns i kärnan och den faktiska tunga lyftningen som görs av dem.

Caching Adapters

Det finns tre cache-adaptrar tillgängliga i kärnan i OpenCart-fil, memcache och apc. Standardkachningsadaptern som används i OpenCart är fil.

Här är snippet från index.php som initierar $ cache objekt med standard caching adapter.

// Cache $ cache = ny Cache ('fil'); $ registry-> set ('cache', $ cache);

Tyvärr finns det inget konfigurerbart sätt som gör att du kan byta cache-adaptern eftersom den är hårdkodad. Med detta sagt kan du använda OCMOD för att ändra standardkakningsadaptern utan att ändra kärnfilen.

Eftersom implementeringen av varje cache-adapter är nästan densamma tittar vi bara på en av cache-adaptrarna för att se vad som händer. Låt oss ta memcache, till exempel. Gå vidare och öppna system / bibliotek / cache / mem.php. Du kan också utforska de andra två adaptrarna file.php och apc.php i samma katalog.

utgå = $ utgå; $ this-> cache = new \ Memcache (); $ this-> cache-> pconnect (CACHE_HOSTNAME, CACHE_PORT);  offentlig funktion få ($ key) return $ this-> cache-> get (CACHE_PREFIX. $ key);  public function set ($ key, $ value) return $ this-> cache-> set (CACHE_PREFIX. $ tangent, $ värde, MEMCACHE_COMPRESSED, $ this-> utgå);  public function delete ($ key) $ this-> cache-> radera (CACHE_PREFIX. $ key); 

Varje cache-adapter definieras under namnet "Cache" för att undvika konflikter.

Minns de metoder som vi diskuterade i det sista avsnittet - de hamnar faktiskt här. Så när du ringer till skaffa sig metod i cache klass kallas det faktiskt skaffa sig metod definierad i den faktiska adapterklassen-i vårt fall är det MINNE klass.

Den faktiska logiken att manipulera cacheposter sker i adapterns klassmetoder. Som du kan se, i konstruktören av MINNE klass vi initierade Memcache objektet och etablerade anslutningen med pconnect metod. Slutligen använder vi metoderna för att få, sätta och ta bort Memcache-objektet för att manipulera cacheposterna.

Å andra sidan, om du tittar på implementeringen av filhanteraren, tar det lite ansträngning att lagra och hämta cache-poster med hjälp av filsystemfunktioner. Bortsett från det finns ingen skillnad i genomförandet.

Så det är så långt som caching-adaptrar är oroliga i OpenCart. Självklart kan du gå vidare och skapa din egen anpassade caching handler om det behövs. Du behöver bara genomföra de nödvändiga metoderna och du är klar.

Det är det för idag. Jag hoppas att du har haft handledningen och att det kommer att uppmuntra dig att använda caching i dina anpassade moduler efter behov.

Slutsats

Idag har vi diskuterat caching i OpenCart. Vi började med grunderna för caching, och när vi gick vidare utforskade vi hur caching används i fronten. Slutligen gick vi igenom de olika cache-adaptrar som finns tillgängliga i OpenCart.

Skriv gärna dina tankar i form av frågor och förslag med hjälp av flödet nedan.