Page Cache Ultimate
Diese gefälschten Benutzer werden von Page Cache Ultimate erstellt, um den Cache zu anonymisieren (neue Methode). Sie dürfen sie nicht löschen (sie werden erneut erstellt).
Es wird nicht viele dieser gefälschten Benutzer geben, wahrscheinlich weniger als 5, es hängt von der Anzahl der Gruppen und den Unterschieden in der Anzeige zwischen ihnen ab.
Sie sind nicht aktiv, so dass sie Ihre Statistiken nicht stören.
Wenn Sie ein Anvato-Theme haben, müssen Sie folgendes tun, um zu verhindern, dass der Warenkorb bei jeder Aktualisierung geöffnet wird.
Kopieren Sie die Datei /modules/an_theme/views/js/sidebarcart.js in Ihr Theme, damit Sie es weiterhin aktualisieren können, ohne Änderungen zu verlieren, in /themes///modules/an_theme/views/js(erstellen Sie Ordner, falls nötig)
Ersetzen Sie in dieser Datei die Ligne:
if (prestashop.page.page_name != 'cart' && prestashop.page.page_name != 'checkout') {
Durch
if (prestashop.page.page_name != 'cart' && prestashop.page.page_name != 'checkout' && requestData.action!='refresh') {
Löschen Sie dann den Cache der Performances-Seite und den Cache Ihres Browsers, damit Sie testen können.
Wenn Ihr Theme das Tag "widgetblock" verwendet, wie es beim Warehouse-Theme der Fall ist, müssen Sie den Cache auf der Performances-Seite löschen, nachdem Sie den Seiten-Cache aktiviert haben, damit die Vorlage erneut kompiliert wird.
All our modules can run on LiteSpeed Web Server since it supports the Apache .htaccess file.
However, the HTML cache feature (Page Cache Ultimate) is not compatible with the LiteSpeed Cache Plugin since they are both working on the same layer of cache.
Which one should you choose?
LiteSpeed Cache is a generic cache which does not handle all different contexts of Prestashop. Which taxes are applied? Is there a flash sale comming up? Should I display a different content for this user because he belongs to a specific user group? Did this visitor accept cookies? etc.
Page Cache Ultimate has been created for Prestashop and it is only dedicated to this platform, it handles all different contexts and can also upgrade fast if a new Prestashop feature is out.
Wenn Sie das von Google entwickelte Apache-Modul PageSpeed (x-mod-pagespeed) verwenden, müssen Sie die folgende Option deaktivieren, damit es die von Page Cache hinzugefügten Browser-Cache-Direktiven nicht überschreibt:
ModPagespeedModifyCachingHeaders aus
Nein, es wird dringend empfohlen, den Smarty-Cache aktiviert zu lassen. Dies beschleunigt Seiten, die nicht zwischengespeichert werden, und auch Seiten, für die der Cache noch nicht generiert wurde.
Um Ihre Stile wiederherzustellen, müssen Sie nur den Cache von "Page Cache Ultimate" löschen.
Um dieses Problem zu vermeiden, können Sie im "Erweiterten Modus" in der Konfiguration von "Page Cache Ultimate" unter "Cache-Schlüssel" die Option "CSS- und JS-Version in den Cache-Schlüssel einfügen" aktivieren.
To avoid the cookie notice to appear 1 second, then disappear, you must override the javascript file of the iqitcookielaw module.
To do it, create a file with the following content:
$(document).ready(function () { if (getCookie('cookielaw_module') != 1) { $("#iqitcookielaw").addClass('iqitcookielaw-showed'); } $("#iqitcookielaw-accept").click(function (event) { event.preventDefault(); $("#iqitcookielaw").removeClass('iqitcookielaw-showed'); setcook(); }); }); function setcook() { var name = 'cookielaw_module'; var value = '1'; var today = new Date(); var expire = new Date(); expire.setTime(today.getTime() + 3600000 * 24 * 14); document.cookie = name + "=" + escape(value) + ";path=/;" + ((expire == null) ? "" : ("; expires=" + expire.toGMTString())) } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for (var i = 0; i != ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1); if (c.indexOf(name) != -1) return c.substring(name.length, c.length); } return ""; }
And place it in the theme (or child theme if you have one): /themes/warehouse/modules/iqitcookielaw/views/js/front.js
Then clear the cache in the Performances page.
When the cache is created, the page is anonymized, that means it is displayed without any information about the visitor displaying the page.
Modules that display content relative to the current visitor can be marked as dynamic, that means the content will be refreshed (replaced) by a background request in the browser that will carry the context of the current visitor.
If you check the option "Display nothing in cache" then the module will not be called to display its content in this hook during the creation of the cache. However, the content will be displayed as other dynamic modules (with background request).
If the products list is reloaded each time you display a page with a products list then you can fix this by modifying the file /warehouse/modules/ps_shoppingcart/ps_shoppingcart.js as follow:
Ersetzen Sie diese Zeile:
prestashop.emit('updateFacets', window.location.href);
Durch:
if (event.reason && event.reason.linkAction != 'refresh') { prestashop.emit('updateFacets', window.location.href); }
Aktualisieren Sie mindestens auf Page Cache Ultimate 7.9.39, um eine vollständige Kompatibilität mit dem cookiesplus-Modul zu erreichen.
Deaktivieren Sie in der Konfiguration des Warenkorbs im Abschnitt "Add to Cart Action" die Option "Open the cart".
Das ist normal. Wenn der Cache nicht verfügbar ist, ist die Anzeige genauso langsam wie ohne Cache.
Sie sollten den Cache nur leeren, wenn es nötig ist (Änderungen an CSS oder Javascript, bei Templates wählen Sie die Option "Template-Dateien neu kompilieren, wenn sie aktualisiert wurden" auf der Seite "Leistung").
Wenn die Auswahlliste für die Währung/Zahlungsmittel nicht mehr funktioniert, überprüfen Sie diese beiden Optionen:
Die Option "Ignore URLs matching this regex" muss ".*SubmitCurrency=1.*" enthalten, zum Beispiel: ".*[\?&]q=.*|.*SubmitCurrency=1.*"
Die Option "Ignored URL parameters " darf "submitcurrency,id_currency" nicht enthalten
Vielleicht möchten Sie auch den Browser-Cache deaktivieren, denn wenn der Besucher nach dem Aufrufen mehrerer Seiten die Währung wechselt, wird bei einem erneuten Besuch dieser Seiten die ursprüngliche Währung angezeigt.
Denken Sie daran, nach diesen Änderungen den Cache des Moduls und des Browsers zu leeren.
Wenn Sie ein Produkt, eine Kategorie, eine CMS-Seite, einen Preis, den Lagerbestand usw. ändern, wird der Cache automatisch aktualisiert.
Wenn Sie ein Modul hinzufügen, löschen oder ändern, müssen Sie den Cache manuell löschen, da dies nicht automatisch erkannt werden kann. Zum Beispiel, wenn Sie den Schieberegler der Startseite ändern.
Wenn Sie das CSS oder eine Vorlage Ihres Designs ändern, müssen Sie den Cache manuell leeren, da dies nicht automatisch erkannt werden kann.
Wenn Sie Ihren Katalog, Ihre Preise und/oder Ihre Lagerbestände mit einer externen Anwendung synchronisieren oder ändern, müssen Sie wahrscheinlich den Cache manuell oder mit einem Skript leeren, da Hooks von Prestashop nicht ausgeführt werden.
Um den Cache bestimmter Seiten zu löschen, können Sie die CRON/API-URLs verwenden, die Sie im Menü „API“ in der Konfiguration von Page Cache Ultimate finden. Sie können auch die Statistiktabelle verwenden, um Seiten zu filtern, die Sie aktualisieren möchten, und dann auf die Schaltfläche "Cache leeren (nur Dateien)" klicken.
Beachten Sie auch, dass der Browser-Cache nicht gelöscht werden kann und daher zeitlich begrenzt ist.
Dies geschieht, weil der Anmeldelink dynamisch geladen wird und daher der "back"-Parameter, der auf die aktuelle URL verweist, mit der URL der dynamischen Module gesetzt wird.
Um dieses Problem zu vermeiden, gehen Sie in die Konfiguration von Page Cache Ultimate, in das Menü "Dynamische Module und Widgets", und fügen Sie unten im Feld "Auszuführendes Javascript" den folgenden Javascript-Code ein:
if (!prestashop_pc.customer.is_logged) {
$('header a').each(function() {
$(this).attr('href').replace('ajax%3Dtrue', '').replace('page_cache_dynamics_mods%3D=1', '')
});
}
Löschen Sie den Cache und das Problem sollte behoben sein.
diese Verzeichnisse werden erstellt, wenn der Cache in PHP nicht vollständig gelöscht werden kann, weil er zu lang ist und einen Zeitüberschreitungsfehler verursacht. Anstatt also das Cache-Verzeichnis zu löschen, wird es einfach mit diesem Suffix umbenannt.
Sie können alle diese Verzeichnisse mit dem Suffix please_delete_me löschen, aber ich empfehle, dies direkt in einer Serverkonsole zu tun, da es zu lange dauert, dies per FTP zu tun.
Diese Hooks sind für Entwickler von Modulen, kontaktieren Sie den Support, wenn Sie Hilfe benötigen.
Hier ist ein Beispiel, wie die Funktionen der Hooks implementiert werden können:
/** * Called each time a page is displayed so this must remain very fast! * @param $params Empty array * @return mixed The datas you will need in hookActionJPrestaRestoreSpecificCacheKeyInfos() */ public function hookActionJPrestaGetSpecificCacheKeyInfos($params) { // Let's say that the cookie 'test' modify the content of the page, we indicates to the cache manager // to generate a cache key that depends on the value of this cookie return $_COOKIE['test']; } /** * This function is called by Page Cache Ultimate when the cache-warmer service want to generate the cache of a * specific context. In this case we must restore the context so the content is the good one. * @param $params $params['specifics'] contains the datas returned by the hook 'ActionJPrestaGetSpecificCacheKeyInfos' */ public function hookActionJPrestaRestoreSpecificCacheKeyInfos($params) { // Here we will just modify the $_COOKIE value, we don't need to send the cookie to the browser with function // setcookie, we just want the remaining PHP code to execute to get the correct value of the cookie. $_COOKIE['test'] = $params['specifics']; }
Mit dem Modul Creative Elements können Sie Teile Ihres Shops mit Links/Schaltflächen bearbeiten, die direkt im Shop angezeigt werden, wenn Sie im Adminbereich Ihres Prestashops angemeldet sind. Um diese Funktionalität zu erhalten, ist der Cache mit dem Grund "editing-with-creative-element" deaktiviert. Seien Sie beruhigt, Ihre Besucher profitieren sehr wohl vom Cache, es sind nur die mit dem Admin angemeldeten Benutzer, die keinen Cache haben. Um den Cache zu erhalten, müssen Sie nur den Shop in einem privaten Tab Ihres Browsers anzeigen.
Als Erstes sollten Sie sicherstellen, dass Sie die neueste Version des Moduls haben, da ich es ständig verbessere, um den Speicherverbrauch zu reduzieren, sowohl auf der Datenbank- als auch auf der Festplattenseite.
Das Zweite ist, regelmäßig (alle zwei oder drei Tage) eine Bereinigung durchzuführen. Eine Bereinigung löscht den Cache von Seiten, die nicht mehr existieren oder deren Kontext nicht mehr vorhanden ist. Dies wirkt sich nicht auf die Leistung des Cache aus. Sie können eine Bereinigung manuell über eine Schaltfläche unter der Tabelle mit den Cache-Statistiken durchführen oder eine CRON-Aufgabe mit der URL planen, die im Menü "API (CRON URLs)" in der Modulkonfiguration angezeigt wird.
Wenn es schließlich Verzeichnisse in /var/cache/pagecache gibt, die mit "please_delete_me" enden, dann können Sie diese löschen. Es handelt sich dabei um einen alten Cache, den PHP nicht vollständig löschen konnte (zu lang).
Wenn Sie versuchen, Page Cache Ultimate zu installieren, erhalten Sie die Fehlermeldung "Diese Datei scheint keine gültige .zip-Datei eines Moduls zu sein."? Das ist normal, denn diese Zip-Datei enthält mehrere Zip-Dateien, mit denen das Modul je nach Prestashop-Version installiert werden kann: PS-1.5/1.6, PS1.7/8 und Thirtybees.
Sie müssen also die für Ihren Shop passende Zip-Datei extrahieren und installieren.
Der statische Cache kann nur verwendet werden, wenn man den Kontext kennt, in dem sich der Besucher befindet. Der Kontext enthält mehrere Informationen, die nicht allein aus der URL abgeleitet werden können: die Währung, die Benutzergruppen, die Wahl der Cookies, die zu erhebenden Steuern, etc.
Dieser Kontext wird in einem Cookie namens "jpresta_cache_context" gespeichert, das hinzugefügt wird, wenn der Benutzer eine erste Seite aufruft. Sobald das Cookie vorhanden ist, kann der statische Cache verwendet werden.
Gehen Sie in die Modulkonfiguration, stellen Sie im Menü "Cache-System" sicher, dass "Prestashop Static!" ausgewählt ist. Wenn es bereits markiert ist, wählen Sie "Standard-Dateisystem" und speichern Sie es, dann wählen Sie "Prestashop Static!" und speichern Sie es erneut. Dadurch wird der statische Cache wieder aktiviert.
Die Meldung "customer-specific-prices" bedeutet, dass Sie mit einem Benutzer angemeldet sind, der bestimmte Preisregeln hat. Es ist daher sinnlos, einen Cache zu erstellen, da nur er davon profitieren kann. Besser ist es, Benutzergruppen zu erstellen und für diese Gruppen Preisregeln zu erstellen.
Möglicherweise simulieren Sie einen Telefonbildschirm mithilfe der Konsole Ihres Browsers, was erklärt, warum Sie diese mobile Ansicht sehen, obwohl Sie einen Desktopbildschirm haben.
Dies geschieht, weil ein Cookie namens 'jpresta_cache_context' den Kontext des Besuchers im Browser speichert. Dieser Kontext enthält Informationen darüber, ob die Ansicht 'mobil' oder 'Desktop' ist. Wenn Sie also zuerst Seiten im Desktopmodus anzeigen und dann in den Mobilmodus wechseln, wird der Cache weiterhin die Desktopansicht liefern.
Wenn Sie die mobile Ansicht mithilfe der Konsole Ihres Browsers testen möchten, stellen Sie sicher, dass Sie den Cookie 'jpresta_cache_context' vorher löschen.
Wenn Sie das Modul "Google Tag Manager Enhanced Ecommerce" von "Comptoir du code" verwenden, stellen Sie sicher, dass Sie die neueste Version des Moduls erhalten und die spezielle Option für die Verwendung mit Full Page Cache-Modulen aktivieren.
In jedem Fall müssen Sie die Google Tag Manager-Module nicht als dynamisch markieren.
Wenn Sie die Konfigurationsschritte validieren, achten Sie darauf, die automatische Konfiguration in Schritt 4 auszuführen. Dadurch wird das Page Cache Ultimate-Modul für alle bekannten Module wie den Warenkorb konfiguriert. Sie sollten sich auf diese automatische Konfiguration verlassen und nur dann manuelle Änderungen vornehmen, wenn bei aktiviertem Cache etwas nicht wie gewohnt funktioniert.
Der von Pagespeed und GTMetrix berechnete Score umfasst eine sehr große Anzahl von Parametern, deren Bedeutung je nachdem, ob Sie ein Mobiltelefon oder einen Computer verwenden, unterschiedlich ist.
Mit dem Modul Prestashop Speed Pack können Sie die folgenden von Pagespeed Insight oder GT Metrix gemeldeten Punkte korrigieren:
- Reduzierung der Serverantwortzeiten/TTFB (Page Cache Ultimate)
- Bereitstellung von Bildern in Formaten der nächsten Generation (WEBP-Komprimierung von Bildern)
- Verzögerung von Off-Screen-Bildern (Lazy Loading von Bildern)
Andere Parameter wie das LCP können nicht durch ein Modul korrigiert werden. Dieses LCP gibt beispielsweise die Anzeigeverzögerung des größten Elements an, das zuerst angezeigt wird; es wird oft durch die Verwendung eines Karussells verschlechtert, das Bilder mit einem Lazy-Loading-System anzeigt, oder weil der JavaScript-Code, der es initialisiert, zu langsam ist. Diese Art von Problem kann nur manuell behoben werden.
Um sicherzugehen, dass die Score-Berechnung mit einem verfügbaren Cache durchgeführt wurde, führen Sie sie außerdem zweimal aus.
Ich lade Sie ein, meinen Artikel zu lesen, Den Pagespeed-Score Ihres Prestashops verstehen und verbessern
Eine Seite kann mehrere Cache-Versionen haben, abhängig vom Kontext des Besuchers. Dieser Kontext enthält Informationen wie die ausgewählte Währung, die Benutzergruppe, die Präferenzen des Besuchers bezüglich Cookies, die für diesen Besucher geltenden Steuerregeln, das Land des Besuchers, falls relevant, und mehr. Daher kann es sein, dass Sie nicht die zwischengespeicherte Seite erhalten, wenn Sie eine Seite anzeigen, weil Ihr Kontext unterschiedlich ist.
Module wie "Creative Slider" verwenden kurze Codes, um die Anzeige der Inhalte zu vereinfachen. Dies geschieht in der Regel im Hook "actionOutputHTMLBefore". Stellen Sie also sicher, dass das Cache-Modul nach allen Modulen in diesem Hook platziert ist. Gehen Sie in "Design" > "Positionen", aktivieren Sie die Option "Nicht positionierbare Hooks anzeigen", suchen Sie den Hook "actionOutputHTMLBefore" und verschieben Sie das Modul Page Cache Ultimate oder Speed Pack an das Ende.
Dieser Fehler ist auf eine neue Sicherheitsbeschränkung zurückzuführen, die von meinem Hosting-Anbieter (OVH) auf all ihren Servern eingeführt wurde.
Um dies zu beheben, müssen Sie meine Module auf die neueste Version aktualisieren.
Sie werden dies nicht mit dem JPresta Easy Upgrade-Modul tun können, da auch dieses ein Upgrade benötigt.
Um das Upgrade durchzuführen, verwenden Sie die Addons oder laden Sie das Zip-Archiv von Ihrem JPresta-Konto herunter. Für Page Cache Ultimate und Speed Pack müssen Sie das Zip-Archiv extrahieren, um das für Ihre Prestashop-Version passende zu finden. Sobald Sie das richtige Zip-Archiv haben, installieren Sie es wie ein neues Modul, um Ihre aktuelle Version zu aktualisieren und die Konfiguration beizubehalten.
Keine Sorge, danach können Sie wie gewohnt mit JPresta Easy Upgrade weiter aktualisieren.
Um bestimmte Seiten Ihres Shops nicht im Cache zu speichern, können Sie einen regulären Ausdruck verwenden.
Gehen Sie in die Konfiguration des Moduls, klicken Sie auf "Erweiterter Modus" und dann auf "Optionen". Dort finden Sie ein Feld "URLs durch regulären Ausdruck ignorieren". Dieses Feld ist standardmäßig mit dem folgenden regulären Ausdruck vorausgefüllt:
.*[\?&]q=.*|.*SubmitCurrency=1.*
Mit diesem regulären Ausdruck schließt das Modul alle Suchanfragen aus dem Cache aus (Verwendung des Parameters "q"), da dies nicht effizient ist, da die Anzahl der identischen Suchanfragen sehr gering ist. Es wird auch den Cache bei einer Währungsänderung deaktivieren.
Um eine auszuschließende Seite hinzuzufügen, können Sie einen weiteren Ausdruck mit einem "|"-Zeichen dahinter einfügen. Wenn Sie zum Beispiel die Seite https://shop.com/85-foo ausschließen wollen:
.*[\?&]q=.*|.*SubmitCurrency=1.*|.*85-foo.*
Weitere Informationen zu regulären Ausdrücken finden Sie in dieser Dokumentation: https://www.php.net/manual/en/reference.pcre.pattern.syntax.php
Um Ihren regulären Ausdruck zu testen, verwenden Sie dieses Tool: https://regex101.com/
Wenn der Cache aktiviert ist, enthält die JavaScript (JS)-Variable "prestashop" keine Informationen über den aktuellen Besucher/Kunden. Der Cache ist nämlich anonymisiert.
Sie müssen warten, bis die dynamischen Module aktualisiert werden, damit diese Informationen verfügbar sind.
Hier ist ein Skript, mit dem Sie auf die Informationen zugreifen können, sobald sie verfügbar sind:
if (typeof jprestaGetCacheType == 'function') {
// jprestaDynamicContentLoaded wird ausgelöst
prestashop.on('jprestaDynamicContentLoaded', function() {
// Hier kann die Variable 'prestashop_pc' wie die Variable 'prestashop' verwendet werden
// Alles, was in Media::addJsDef definiert ist, wird ebenfalls aktualisiert
console.log('Das Ereignis jprestaDynamicContentLoaded wurde ausgelöst und empfangen');
if (prestashop_pc.customer.is_logged) {
console.log('Der Kunde ' + prestashop_pc.customer.email + ' ist eingeloggt.');
} else {
console.log('Kein Kunde ist eingeloggt.');
}
});
} else {
// Normale Verarbeitung, kein Cache
// jprestaDynamicContentLoaded wird nicht ausgelöst
console.log('Diese Seite ist nicht im Cache gespeichert');
if (prestashop.customer.is_logged) {
console.log('Der Kunde ' + prestashop.customer.email + ' ist eingeloggt.');
} else {
console.log('Kein Kunde ist eingeloggt.');
}
}