Caching in OpenCart verstehen

Heutzutage können Sie es sich nicht leisten, selbst für ein paar Minuten offline zu gehen, wenn Sie mit einem globalen Publikum zu tun haben, da Ihr Konkurrent die Chance hat, zu beweisen, dass er Ihnen voraus ist.

Caching ist ein wichtiger Faktor bei der Webentwicklung. Es hilft wirklich, das schwere Heben eines Webservers zu entlasten, um Tausende von Anforderungen zu bedienen, wenn nicht Millionen gleichzeitig. Heutzutage stehen unzählige Optionen zur Verfügung, die Ihrer Webanwendung eine Leistungssteigerung verleihen Basiskonzept der Zwischenspeicherung bleibt gleich.

Der Zweck des Cachings

Vorbei sind die Zeiten, in denen Sie nur eine statische HTML-Website mit einigen Seiten erstellen mussten und Sie waren fertig. In diesem Fall müssen Sie sich nicht um die gleichzeitigen Anforderungen und den starken Datenverkehr auf Ihrer Website kümmern, da das Senden dieser statischen HTML-Seiten im Vergleich zu den dynamischen Webseiten, die einiges an Serverressourcen erfordern, um ein Vielfaches schneller ist sich.

Eine typische dynamische Seite führt viel aus, von der Abfrage einer Datenbank bis zum Abrufen von Daten von Drittanbietern. Das Anzeigen einer Seite, die viele Informationen in verschiedenen Formaten enthält, erfordert viel Zeit. Insbesondere können Sie es sich nicht leisten, die Datenbank abzufragen, um für jede Anforderung dieselben komplexen Informationen abzurufen, wenn der Datenverkehr zunimmt. In Kürze werden Ihre Server auf Ressourcen beschränkt, und bevor Sie etwas tun können, sind sie verschwunden!

Sie brauchen also etwas dazwischen, das die Dinge beschleunigt, und hier kommt das Caching ins Spiel. Die Idee der Zwischenspeicherung ist sehr einfach: Sie speichern die berechneten / formatierten Ergebnisse irgendwo und holen sie bei Bedarf ab, damit Sie sie nicht noch einmal durchführen müssen. Das "irgendwo" könnte irgendwo sein: das Dateisystem, der Arbeitsspeicher oder die Datenbank selbst.

Darüber hinaus gibt es viele Optionen für Caching-Memcached, Redis, Varnish und mehr. Sie können diese je nach Ihren Anforderungen verwenden, und manchmal hilft auch die Kombination mehrerer Komponenten, die Leistung exponentiell zu verbessern.

Da eine vollständige Serie erforderlich ist, um die Besonderheiten des Zwischenspeichers zu erklären, und es ist auch etwas außerhalb des Umfangs dieses Artikels, gehen wir zurück zum OpenCart-Kontext und fahren im nächsten Abschnitt fort.

Wir verwenden die neueste Version von OpenCart. Vergewissern Sie sich, dass Sie diese installiert haben, um dem Code zu folgen.

Funktionsweise der grundlegenden Zwischenspeicherung in OpenCart

Die Caching-Bibliothek befindet sich im Kern selbst, also lassen Sie es uns sofort erkunden. Mach weiter und öffne die system / library / cache.php Datei in Ihrem bevorzugten Texteditor.

cache = neue $ class ($ expire);  else exit ('Fehler: Cache-Treiber konnte nicht geladen werden'. $ Treiber. 'Cache!');  öffentliche Funktion get ($ key) return $ this-> cache-> get ($ key);  public function set ($ key, $ value) return $ this-> cache-> set ($ key, $ value);  public function delete ($ key) return $ this-> cache-> delete ($ key); 

Beginnend mit dem Konstruktor wird der im Konstruktorargument übergebene Cache-Treiber initialisiert. Wenn die Klasse für den angeforderten Caching-Adapter verfügbar ist, wird sie mit dem initialisiert $ this-> cache Eigenschaft, sonst wird es mit der Fehlermeldung beendet. Wir werden die verschiedenen Caching-Adapter im nächsten Abschnitt sehen.

Außerdem gibt es drei Wrapper-Funktionen, mit denen alle mit dem Caching verbundenen Vorgänge ausgeführt werden.

Das erhalten Die Methode wird verwendet, um den Wert aus dem Cache abzurufen.

$ this-> cache-> get ($ key);

Das einstellen Diese Methode wird verwendet, um den Wert im Cache zu speichern.

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

Das löschen Diese Methode wird verwendet, um die Schlüssel / Wert-Zuordnung aus dem Cache zu löschen.

$ this-> cache-> delete ($ key);

Daher ist es auch ganz einfach, Cachefunktionen in Ihren Modulen zu verwenden.

Es gibt viele Stellen im Frontend, an denen die Daten aus dem Cache-Speicher abgerufen werden. Lassen Sie uns einige davon auflisten:

  • Neueste Produkte
  • Bestseller-Produkte
  • Liste der Hersteller
  • Liste der Länder
  • Liste der Währungen
  • Liste der Zonen
  • Einstellungen speichern

Im Falle des Datei-Caching finden Sie alle Cache-Dateien, die unter gespeichert sind System / Cache Verzeichnis. Obwohl OpenCart den Cache bei entsprechenden Ereignissen löscht, können Sie diese Dateien auch manuell löschen, um die neuesten Daten abzurufen.

Das ist es also, was den Caching-Wrapper angeht. Im nächsten Abschnitt sehen Sie die verschiedenen Caching-Adapter im Kern und das eigentliche schwere Heben, das von ihnen ausgeführt wird.

Caching-Adapter

Es gibt drei Caching-Adapter im Kern von OpenCart-Datei, Memcache und Apc. Der in OpenCart verwendete Standard-Caching-Adapter ist file.

Hier ist der Ausschnitt aus index.php die initialisiert das $ cache Objekt mit dem Standard-Caching-Adapter.

// Cache $ cache = neuer Cache ('Datei'); $ registry-> set ('cache', $ cache);

Leider gibt es keine konfigurierbare Möglichkeit, den Caching-Adapter zu wechseln, da er fest codiert ist. Sie können jedoch OCMOD verwenden, um den Standard-Caching-Adapter zu ändern, ohne die Core-Datei zu ändern.

Da die Implementierung jedes Caching-Adapters fast gleich ist, betrachten wir nur einen der Caching-Adapter, um zu sehen, was los ist. Nehmen wir zum Beispiel Memcache. Mach weiter und öffne dich system / library / cache / mem.php. Sie können auch die anderen beiden Adapter erkunden file.php und apc.php im selben Verzeichnis.

verfallen = $ verfallen; $ this-> cache = new \ Memcache (); $ this-> cache-> pconnect (CACHE_HOSTNAME, CACHE_PORT);  public function get ($ key) return $ this-> cache-> get (CACHE_PREFIX. $ key);  public function set ($ key, $ value) return $ this-> cache-> set (CACHE_PREFIX. $ key, $ value, MEMCACHE_COMPRESSED, $ this-> expire);  public function delete ($ key) $ this-> cache-> delete (CACHE_PREFIX. $ key); 

Jeder Caching-Adapter wird im Namespace „Cache“ definiert, um Konflikte zu vermeiden.

Erinnern Sie sich an die Methoden, die wir im letzten Abschnitt besprochen haben - sie enden tatsächlich hier. Also, wenn du anrufst erhalten Methode in der Zwischenspeicher Klasse nennt es eigentlich die erhalten Die in der aktuellen Adapterklasse definierte Methode ist in unserem Fall die Mem Klasse.

Die eigentliche Logik der Manipulation der Cache-Einträge geschieht in den Methoden der Adapterklasse. Wie Sie sehen, im Konstruktor der Mem In dieser Klasse haben wir das Memcache-Objekt initialisiert und die Verbindung mit der pconnect Methode. Schließlich verwenden wir die Methoden get, set und delete des Memcache-Objekts, um die Cache-Einträge zu bearbeiten.

Wenn Sie sich die Implementierung des Dateicache-Handlers ansehen, ist es jedoch ein bisschen aufwendig, Cache-Einträge mithilfe von Dateisystemfunktionen zu speichern und abzurufen. Ansonsten gibt es keinen Unterschied in der Implementierung.

Das ist es also, was Caching-Adapter in OpenCart betrifft. Natürlich können Sie bei Bedarf Ihren eigenen benutzerdefinierten Caching-Handler erstellen. Sie müssen nur die erforderlichen Methoden implementieren und fertig.

Das war `s für heute. Ich hoffe, dass Ihnen das Tutorial gefallen hat und dass Sie dazu angehalten werden sollten, in Ihren benutzerdefinierten Modulen nach Bedarf Caching zu verwenden.

Fazit

Heute haben wir über Caching in OpenCart gesprochen. Wir haben mit den Grundlagen des Caching begonnen und im weiteren Verlauf erkundeten wir, wie Caching im Frontend verwendet wird. Schließlich haben wir uns die verschiedenen in OpenCart verfügbaren Caching-Adapter angesehen.

Fühlen Sie sich frei, Ihre Gedanken in Form von Fragen und Vorschlägen über den untenstehenden Feed auszudrücken.