JPresta Speed Pack

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.

If you are using Nginx, then make sure your configuration is as follow:

Nginx configuration for Speed Pack module

"Proxy mode" must be ON, other options must be OFF.

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:

How to fix warehouse theme

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".

Creative Element - shopping cart options

Ja, alle Bilder Ihres Shops werden automatisch in das WEBP-Format konvertiert. Auch Bilder aus CMS oder anderen Modulen wie Blog.

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").

JA, Sie brauchen noch ein WEBP-Modul für Prestashop! Denn die Funktion hat einen Fehler in PS 8.0. Er sollte in PS 8.1 behoben werden, aber ich werde dies überprüfen, sobald es veröffentlicht wird, weil ich nicht weiß, ob JPG-Bilder in Browsern angezeigt werden, die das WEBP-Format nicht lesen können, wie Safari (iPhone).

Dies war sehr schwierig, eine Konfiguration zu finden, die gut funktioniert. Ich bin kein Experte in der Konfiguration von nginx, so dass ich vermute, es gibt einen anderen Weg, es zu tun. Wenn Sie diese Konfiguration verbessern wollen, dann kontaktieren Sie mich, ich werde gerne diesen Beitrag aktualisieren, um anderen Leuten zu helfen!

Hier ist meine Lösung (seien Sie nett).

Vor dem Abschnitt "server", platzieren Sie diesen Code:

map $http_accept $webp_enable {
	default 0;
	"~*webp" 1;
}

Er wird uns sagen, ob der Browser des Besuchers WEBP-Bilder lesen kann.

Sie haben wahrscheinlich mehrere Zeilen "rewrite" für alle Bilder, platzieren Sie den folgenden Code direkt davor:

# Jpresta Speedpack
if ($webp_enable = 1) {
	# Rewrite images URL using a specific extension ".webp_compressor" so we can have specific rules to compress the image/svg
	# if the webp file is not already created.
	rewrite "^/c/([0-9]+)(\-[_a-zA-Z0-9-]*)/(.*)\.jpg$" /img/c/$1$2.webp_compressor last;
	rewrite "^/c/([_a-zA-Z-]+)/(.*)\.jpg$" /img/c/$1.webp_compressor last;
	rewrite "^/([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$1$2.webp_compressor last;
	rewrite "^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$1$2$3.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$1$2$3$4.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$1$2$3$4$5.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.webp_compressor last;  
	# all other images
	rewrite "^(.+)\.jpg$" $1.webp_compressor last;   
}

location ~* ^(.+)\.webp_compressor$ {
	# Indicates to proxies that the file content/format depends (Vary) on the "Accept" header
	add_header Vary Accept;

	# Indicates to proxies that the file can be cached for the max duration
	add_header Pragma public;
	add_header Cache-Control "public, must-revalidate, proxy-revalidate";
	expires max;

	# Indicates to nginx not to log access
	access_log off;
	log_not_found off;

	# Try to serve the WEBP file directly or compress the image
	set $url_webp_compressor "/modules/jprestaspeedpack/controllers/front/webp.php?src=$1.jpg";
	try_files $1.webp $url_webp_compressor;
}

WARNUNG: Wenn Sie das eigenständige WEBP-Komprimierungsmodul verwenden, müssen Sie „jprestaspeedpack“ durch „jprestawebp“ ersetzen.

Kontaktieren Sie mich, wenn Sie Hilfe benötigen oder das Skript verbessern können!

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.

ja, Browser, die das WEBP-Format nicht lesen können, erhalten das Originalformat (JPG/PNG).

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).

Das Modul ruft nicht den Hook auf, der die Aktualisierung ermöglicht.

Sie müssen die Funktion imageResize() in der Datei /modules/prestablog/prestablog.php ändern:

Ersetzen Sie diese

         return ImageManager::write('jpg', $dest_image, $file_after);

Durch dies

         $ret = ImageManager::write('jpg', $dest_image, $file_after);

Hook::exec('actionOnImageResizeAfter', ['dst_file' => $file_after, 'file_type' => 'jpg']);

return $ret;

danach werden Ihre Bilder aktualisiert.

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.

Nein, das Modul konvertiert nur JPG/PNG-Bilder in das WEBP-Format. Es wird empfohlen, Bilder als JPG hochzuladen, da einige Browser immer noch keine WEBP-Dateien laden können. Außerdem halte ich JPG für bessere Originalbilder, da Prestashop mehrere Formate/Größen von Bildern erstellt. Deshalb sollte das Originalbild von guter Qualität sein.

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.

Google Tag Manager

In jedem Fall müssen Sie die Google Tag Manager-Module nicht als dynamisch markieren.