JPresta Speed Pack
Questi utenti falsi sono creati da Page Cache Ultimate per anonimizzare la cache (nuovo metodo). Non bisogna cancellarli (verranno creati di nuovo).
Non ci saranno molti utenti falsi, probabilmente meno di 5, dipende dal numero di gruppi e dalle differenze di visualizzazione tra di essi.
Non sono attivi, quindi non disturbano le statistiche.
Se avete un tema Anvato, ecco cosa fare per evitare che il carrello si apra ogni volta che viene aggiornato.
Copiare il file /modules/an_theme/views/js/sidebarcart.js nel proprio tema, in modo da poter continuare ad aggiornarlo senza perdere le modifiche, in /themes//modules/an_theme/views/js(creare cartelle se necessario)
In questo file, sostituire il link:
if (prestashop.page.page_name = 'cart' && prestashop.page.page_name = 'checkout') {
Da
if (prestashop.page.page_name != 'cart' && prestashop.page.page_name != 'checkout' && requestData.action!='refresh') {
Quindi cancellare la cache della pagina Performances e la cache del browser per poter effettuare il test.
Se il tema utilizza il tag "widgetblock" come il tema Warehouse, è necessario cancellare la cache nella pagina delle prestazioni dopo aver attivato la cache della pagina, in modo che il modello venga compilato di nuovo.
If you are using Nginx, then make sure your configuration is as follow:
"Proxy mode" must be ON, other options must be OFF.
Se si utilizza il modulo PageSpeed Apache sviluppato da Google (x-mod-pagespeed), è necessario disabilitare la seguente opzione, in modo da non sovrascrivere le direttive di cache del browser aggiunte da Page Cache:
ModPagespeedModifyCachingHeaders off
No, è altamente raccomandato mantenere la cache di Smarty abilitata. Questo velocizzerà le pagine che non sono nella cache e anche le pagine in cui la cache non è ancora generata.
Per recuperare gli stili è sufficiente cancellare la cache di "Page Cache Ultimate".
Per evitare questo problema si può andare in "Modalità avanzata", nella configurazione di "Page Cache Ultimate", quindi in "Chiave di cache" attivare "Inserisci versione CSS e JS nella chiave di cache".
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).
Se l'elenco dei prodotti viene ricaricato ogni volta che si visualizza una pagina con un elenco di prodotti, si può risolvere il problema modificando il file /warehouse/modules/ps_shoppingcart/ps_shoppingcart.js come segue:
Sostituire questa linea:
prestashop.emit('updateFacets', window.location.href);
Per:
if (event.reason && event.reason.linkAction != 'refresh') { prestashop.emit('updateFacets', window.location.href); }
Aggiornare Page Cache Ultimate alla versione 7.9.39 almeno per una piena compatibilità con il modulo cookiesplus.
Se dopo l'installazione del modulo alcune immagini del tuo negozio, come il logo, le immagini delle pagine CMS, le immagini nel back office, ecc., non vengono più visualizzate, è probabilmente a causa di un file .htaccess nelle directory /img e /img/cms. Questo file blocca tutti gli script PHP, anche se si tratta solo di un reindirizzamento (lo script non si trova effettivamente in questa directory).
Per risolvere questo problema, è necessario aggiungere un'eccezione per il nostro convertitore webp.php come segue:
<IfModule mod_php5.c> php_flag engine off
# Enable PHP only for webp.php (Speed Pack) <Files "webp.php"> php_flag engine on </Files> </IfModule> # Apache 2.2 <IfModule !mod_authz_core.c> Order deny,allow Deny from all <Files ~ "webp.php|(?i)^.*\.(jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico|webp)$"> Allow from all </Files> </IfModule> # Apache 2.4 <IfModule mod_authz_core.c> Require all denied <Files ~ "webp.php|(?i)^.*\.(jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico|webp)$">
Require all granted </Files> </IfModule>
Or for /img/cms/.htaccess
<IfModule mod_php5.c> php_flag engine off # Enable PHP only for webp.php (Speed Pack) <Files "webp.php"> php_flag engine on </Files> </IfModule> # Enable webp.php (Speed Pack) <Files "webp.php"> Order allow,deny Allow from all </Files> deny from all <Files ~ "(?i)^.*\.(jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|webp)$"> order deny,allow allow from all </Files>
Nella configurazione del carrello, nella sezione "Azione Aggiungi al carrello", disattivare l'opzione "Apri il carrello".
Sì, tutte le immagini del vostro negozio saranno automaticamente convertite nel formato WEBP. Anche le immagini del CMS o di altri moduli come il blog.
Questo è normale, quando la cache non è disponibile la visualizzazione è lenta come senza cache.
È necessario svuotare la cache solo quando è necessario (modifica di CSS o Javascript, per i modelli scegliere l'opzione "Ricompila i file dei modelli se sono stati aggiornati" nella pagina "Prestazioni").
Sì, avete ancora bisogno di un modulo WEBP per Prestashop! Perché la funzione ha un bug in PS 8.0. Dovrebbe essere risolto in PS 8.1, ma lo verificherò non appena sarà rilasciato perché non so se le immagini JPG saranno visualizzate dai browser che non possono leggere il formato WEBP come Safari (iPhone).
È stato molto difficile trovare una configurazione che funzionasse bene. Non sono esperto nella configurazione di nginx, quindi immagino che ci sia un altro modo per farlo. Se volete migliorare questa configurazione contattatemi, sarò felice di aggiornare questo post per aiutare altre persone!
Ecco la mia soluzione (siate gentili).
Prima della sezione "server", inserire questo codice:
map $http_accept $webp_enable { default 0; "~*webp" 1; }
Ci dirà se il browser del visitatore può leggere le immagini WEBP.
Probabilmente avete più righe di "rewrite" per tutte le immagini, inserite il seguente codice subito prima:
# 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|jpeg|png)$" /img/c/$1$2.webp_compressor last; rewrite "^/c/([_a-zA-Z-]+)/(.*)\.(jpg|jpeg|png)$" /img/c/$1.webp_compressor last; rewrite "^/([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.(jpg|jpeg|png)$" /img/p/$1/$1$2.webp_compressor last; rewrite "^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.(jpg|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" $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; }
ATTENZIONE: se si utilizza il modulo di compressione WEBP autonomo, è necessario sostituire 'jprestaspeedpack' con 'jprestawebp'.
Contattatemi se avete bisogno di aiuto o se potete migliorare lo script!
Se l'elenco di selezione delle valute non funziona più, controllare queste due opzioni:
L'opzione "Ignora gli URL che corrispondono a questa regex" deve includere ".*SubmitCurrency=1.*", ad esempio ".*[\?&]q=.*|.*SubmitCurrency=1.*"
L'opzione "Parametri URL ignorati" non deve includere "submitcurrency,id_currency"
Si consiglia anche di disabilitare la cache del browser, perché se il visitatore cambia valuta dopo aver visualizzato diverse pagine, se torna a quelle pagine, verrà visualizzata la valuta originale.
Non dimenticare di cancellare il modulo e la cache del browser dopo queste modifiche.
sì, i browser che non possono leggere il formato WEBP otterranno il formato originale (JPG/PNG).
Quando modifichi un prodotto, una categoria, una pagina CMS, un prezzo, lo stock, ecc. la cache si aggiorna automaticamente.
Quando aggiungi, elimini o modifichi un modulo, devi svuotare la cache manualmente perché questo non può essere rilevato automaticamente. Ad esempio, quando modifichi lo slider della home page.
Quando modifichi il CSS o un modello del tuo tema, devi svuotare la cache manualmente perché questo non può essere rilevato automaticamente.
Quando sincronizzi o modifichi il tuo catalogo, i tuoi prezzi e/o le tue scorte utilizzando un'applicazione esterna, probabilmente dovrai svuotare la cache manualmente o con uno script perché gli hook di Prestashop non vengono eseguiti.
Per cancellare la cache di pagine specifiche, puoi utilizzare gli URL CRON/API che troverai nel menu "API" nella configurazione di Page Cache Ultimate. Puoi anche utilizzare la tabella delle statistiche per filtrare le pagine che desideri aggiornare, quindi fare clic sul pulsante "Svuota cache (solo file)".
Tieni inoltre presente che la cache del browser non può essere cancellata, per questo è limitata nel tempo.
Questo accade perché il link di accesso viene caricato dinamicamente e quindi il parametro "back" che rimanda all'URL corrente viene impostato con l'URL dei moduli dinamici.
Per evitare questo problema, andate nella configurazione di Page Cache Ultimate, nel menu "Moduli dinamici e widget", in fondo aggiungete il seguente codice javascript al campo "Javascript da eseguire":
if (!prestashop_pc.customer.is_logged) {
$('header a').each(function() {
$(this).attr('href').replace('ajax%3Dtrue', '').replace('page_cache_dynamics_mods%3D=1', '')
});
}
Cancellare la cache dovrebbe risolvere il problema.
queste directory vengono create quando la cache non può essere cancellata completamente in PHP perché è troppo lunga e fallisce con un errore di timed out. Quindi, invece di cancellare la cartella della cache, viene semplicemente rinominata con questo suffisso.
È possibile cancellare tutte queste cartelle con il suffisso please_delete_me, ma si consiglia di farlo direttamente nella console del server, perché sarebbe troppo lungo farlo via FTP.
Questi ganci sono destinati agli sviluppatori di moduli; se avete bisogno di aiuto, contattate il supporto.
Ecco un esempio di come implementare le funzioni dei ganci:
/** * 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']; }
Il modulo Creative Elements consente di modificare parti del negozio con link/bottoni visualizzati direttamente sul negozio quando si è connessi all'amministrazione di Prestashop. Per preservare questa funzionalità, la cache viene disattivata con la motivazione "editing-with-creative-element". I visitatori beneficiano della cache, ma sono solo gli utenti collegati all'amministratore a non averla. Per ottenere la cache, è sufficiente visualizzare il negozio in una scheda privata del browser.
La prima cosa da fare è assicurarsi di avere l'ultima versione del modulo, perché lo sto costantemente migliorando per ridurre il consumo di memoria, sia sul database che sul disco rigido.
La seconda cosa è eseguire periodicamente un purge (ogni 2 o 3 giorni). Un purge rimuove dalla cache le pagine che non esistono più o il cui contesto non esiste più. Questo non influisce sulle prestazioni della cache. È possibile eseguire la pulizia manualmente tramite un pulsante nella tabella delle statistiche della cache, oppure programmando un task CRON con l'URL visualizzato nel menu "API (URL CRON)" nella configurazione del modulo.
Infine, se ci sono cartelle in /var/cache/pagecache che terminano con "please_delete_me", è possibile cancellarle. Si tratta di una vecchia cache che PHP non è riuscito a cancellare completamente (troppo lunga).
Il modulo non chiama l'hook che consente l'aggiornamento.
È necessario modificare la funzione imageResize() nel file /modules/prestablog/prestablog.php:
Sostituire questo
return ImageManager::write('jpg', $dest_image, $file_after);
Con questo
$ret = ImageManager::write('jpg', $dest_image, $file_after);
Hook::exec('actionOnImageResizeAfter', ['dst_file' => $file_after, 'file_type' => 'jpg']);
return $ret;
in seguito le immagini saranno aggiornate.
La cache statica può essere utilizzata solo se si conosce il contesto del visitatore. Il contesto contiene una serie di informazioni che non possono essere dedotte dal solo URL: valuta, gruppi di utenti, scelta dei cookie, tasse da applicare, ecc.
Questo contesto è memorizzato in un cookie chiamato "jpresta_cache_context" che viene aggiunto quando l'utente visualizza una prima pagina. Una volta che il cookie è presente, è possibile utilizzare la cache statica.
Andare alla configurazione del modulo, nel menu "Sistema di cache" assicurarsi che "Prestashop Static!" sia selezionato. Se è già selezionata, selezionare "File system standard" e salvare, quindi selezionare "Prestashop Static!" e salvare nuovamente. In questo modo si riattiva la cache statica.
Il messaggio "prezzi specifici per il cliente" significa che si è collegati a un utente che ha regole di prezzo specifiche, quindi non ha senso creare una cache perché solo lui potrà usufruirne. È preferibile creare gruppi di utenti e creare regole di prezzo per questi gruppi.
Forse stai simulando uno schermo di telefono utilizzando la console del tuo browser, il che spiega perché stai vedendo questa vista mobile nonostante tu abbia uno schermo desktop.
Ciò accade perché un cookie chiamato 'jpresta_cache_context' memorizza il contesto del visitatore nel browser. Questo contesto include informazioni su se la visualizzazione è 'mobile' o 'desktop'. Pertanto, se visualizzi inizialmente le pagine in modalità desktop e poi passi alla modalità mobile, la cache continuerà a fornire la visualizzazione desktop.
Se desideri testare la visualizzazione mobile utilizzando la console del tuo browser, assicurati di eliminare il cookie 'jpresta_cache_context' in anticipo.
No, il modulo converte solo immagini JPG/PNG in formato WEBP. Si consiglia di importare le immagini come JPG perché alcuni browser ancora non possono caricare file WEBP. Inoltre, penso che i JPG siano migliori come immagini originali perché Prestashop crea più formati/dimensioni di immagini, motivo per cui l'immagine originale deve essere di buona qualità.
Se si utilizza il modulo "Google Tag Manager Enhanced Ecommerce" creato da "Comptoir du code", assicurarsi di ottenere l'ultima versione del modulo e di attivare l'opzione specifica per l'uso con i moduli full page cache.
In ogni caso, non è necessario contrassegnare i moduli di Google Tag Manager come dinamici.
I punteggi calcolati da Pagespeed e GTMetrix includono un numero molto elevato di parametri la cui importanza varia a seconda che si utilizzi un telefono cellulare o un computer.
Il modulo Prestashop Speed Pack ti consente di correggere i seguenti punti segnalati da Pagespeed Insight o GT Metrix:
- Ridurre i tempi di risposta del server (TTFB)
- Offri immagini in formati di nuova generazione
- Rimandare le immagini fuori schermo
Altri parametri come LCP non possono essere corretti da un modulo. Ad esempio, questo LCP indica il ritardo di visualizzazione dell'elemento più grande visualizzato per primo; spesso è degradato dall'uso di un carosello che visualizza immagini in lazyloading o perché il codice javascript che lo inizializza è troppo lento. Questo tipo di problema può essere corretto solo manualmente.
Inoltre, per essere sicuro che il calcolo del punteggio sia stato eseguito con una cache disponibile, eseguilo due volte.
Ti invito a leggere il mio articolo per comprendere appieno questo punteggio Pagespeed per Prestashop .
Quando convalidi i passaggi di configurazione, assicurati di eseguire la configurazione automatica al passaggio 4. Ciò configura il modulo Page Cache Ultimate per tutti i moduli conosciuti come il carrello degli acquisti. Dovresti fare affidamento su questa configurazione automatica e apportare modifiche manuali solo quando qualcosa non funziona come al solito quando la cache è abilitata.
Il punteggio calcolato da Pagespeed e GTMetrix include un numero molto elevato di parametri la cui importanza varia a seconda che si utilizzi un telefono cellulare o un computer.
Il modulo Prestashop Speed Pack ti consente di correggere i seguenti punti segnalati da Pagespeed Insight o GT Metrix:
- Riduci i tempi di risposta del server/TTFB (Page Cache Ultimate)
- Offrire immagini in formati di nuova generazione (compressione WEBP delle immagini)
- Rinvio delle immagini fuori schermo (caricamento lento delle immagini)
Altri parametri come l'LCP non possono essere corretti da un modulo. Ad esempio, questo LCP indica il ritardo di visualizzazione dell'elemento più grande visualizzato per primo; spesso è degradato dall'uso di un carosello che visualizza le immagini utilizzando un sistema di caricamento lento o perché il codice javascript che lo inizializza è troppo lento. Questo tipo di problema può essere risolto solo manualmente.
Inoltre, per essere sicuro che il calcolo del punteggio sia stato eseguito con una cache disponibile, eseguilo due volte.
Ti invito a leggere il mio articolo Capire e migliorare il punteggio Pagespeed del vostro negozio Prestashop
Una pagina può avere più versioni nella cache a seconda del contesto del visitatore. Questo contesto include informazioni come la valuta selezionata, il gruppo dell'utente, le preferenze del visitatore riguardo ai cookie, le regole fiscali applicabili a questo visitatore, il paese del visitatore se rilevante, ecc. Pertanto, potresti non ricevere la pagina memorizzata nella cache quando visualizzi una pagina perché il tuo contesto è diverso.
Moduli come "Creative Slider" utilizzano codici brevi per facilitare la visualizzazione dei contenuti. Questo avviene di solito nel gancio "actionOutputHTMLBefore", quindi è sufficiente assicurarsi che il modulo cache sia posizionato dopo tutti i moduli di questo gancio. Andare in "Design" > "Posizioni", selezionare l'opzione "Visualizza ganci non posizionabili", cercare il gancio "actionOutputHTMLBefore" e spostare il modulo Page Cache Ultimate o Speed Pack alla fine.
Una volta fatto, è necessario cancellare la cache
Questo errore è dovuto a una nuova restrizione di sicurezza implementata dal mio provider di hosting (OVH) su tutti i loro server.
Per risolverlo, è necessario aggiornare i miei moduli all'ultima versione.
Non sarà possibile farlo utilizzando il modulo JPresta Easy Upgrade, poiché anche questo richiede un aggiornamento.
Per effettuare l'aggiornamento, passa tramite Addons o scarica il file zip dal tuo account JPresta. Per Page Cache Ultimate e Speed Pack, è necessario estrarre lo zip per trovare quello che corrisponde alla tua versione di PrestaShop. Una volta trovato lo zip corretto, installalo come un nuovo modulo per aggiornare la versione corrente mantenendo la configurazione.
Non ti preoccupare, dopo questo, potrai continuare ad aggiornare con JPresta Easy Upgrade come al solito.