JPresta Speed Pack
Estos usuarios falsos son creados por Page Cache Ultimate para anonimizar la caché (nuevo método). No debe borrarlos (se crearán de nuevo).
No habrá muchos de estos usuarios falsos, probablemente menos de 5, depende del número de grupos y de las diferencias de visualización entre ellos.
No están activos, por lo que no perturbarán sus estadísticas.
Si tienes un tema de Anvato, esto es lo que debes hacer para evitar que el carrito se abra cada vez que se actualice.
Copia el archivo /modules/an_theme/views/js/sidebarcart.js en tu tema para poder seguir actualizándolo sin perder las modificaciones, en /themes//modules/an_theme/views/js(crea carpetas si es necesario)
En este archivo, reemplaza la línea:
if (prestashop.page.page_name != 'cart' && prestashop.page.page_name != 'checkout') {
Por
if (prestashop.page.page_name != 'cart' && prestashop.page.page_name != 'checkout' && requestData.action!='refresh') {
A continuación, borra la caché de la página de Performances y la caché de tu navegador para que puedas probar.
Si su tema utiliza la etiqueta "widgetblock" como lo hace el tema de Warehouse, entonces necesita borrar la caché en la página de Performances después de habilitar el Page Cache para que la plantilla se compile de nuevo.
If you are using Nginx, then make sure your configuration is as follow:
"Proxy mode" must be ON, other options must be OFF.
Si utiliza el módulo PageSpeed Apache desarrollado por Google (x-mod-pagespeed), debe desactivar la siguiente opción para que no anule las directivas de caché del navegador añadidas por Page Cache:
ModPagespeedModifyCachingHeaders off
No, es muy recomendable mantener la caché de Smarty activada. Esto acelerará las páginas que no tienen caché y también las páginas en las que la caché aún no se ha generado.
Para recuperar sus estilos sólo tiene que borrar el caché de "Page Cache Ultimate".
Para evitar este problema puede ir en "Modo avanzado", en la configuración de "Page Cache Ultimate", luego en "Clave de caché" habilitar "Insertar versión CSS y JS en clave de caché".
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:
Sustituir esta línea:
prestashop.emit('updateFacets', window.location.href);
Por:
if (event.reason && event.reason.linkAction != 'refresh') { prestashop.emit('updateFacets', window.location.href); }
Actualice su módulo "Cookies - Ley de cookies GDPR (bloquear antes del consentimiento)" a la versión 1.5.6 como mínimo.
Actualice "Page Cache Ultimate" a la versión mínima 7.9.39 para una compatibilidad total con el módulo cookiesplus.
Para Prestashop 1.7
- Deshabilite ambos módulos (esto también funciona si aún no están instalados)
- En el archivo /modules/cookiesplus/override_17/classes/Hook.php, cambie el nombre de la función coreCallHook a coreCallHook_off y la función coreRenderWidget a coreRenderWidget_off (de hecho, Page Cache Ultimate ejecutará el procesamiento apropiado si el módulo cookiesplus está activado).
- Puedes reactivar (o instalar) los 2 módulos.
Si después de instalar el módulo algunas imágenes de tu tienda, como el logotipo, las imágenes de las páginas CMS, las imágenes en el back office, etc., no se muestran, probablemente sea debido a un archivo .htaccess en los directorios /img y /img/cms. Este archivo bloquea todos los scripts PHP, incluso si se trata solo de una redirección (el script no está realmente en este directorio).
Para corregir este problema, debes añadir una excepción para nuestro convertidor webp.php de la siguiente manera:
<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>
En la configuración del carrito de la compra, en la sección "Acción de añadir al carrito", desactive la opción "Abrir el carrito".
Sí, todas las imágenes de su tienda se convertirán automáticamente al formato WEBP. Incluso las imágenes de CMS u otros módulos como blog.
Esto es normal, cuando la caché no está disponible la visualización es tan lenta como sin la caché.
Sólo debe vaciar la caché cuando sea necesario (modificación de CSS o Javascript, para las plantillas elija la opción "Recompilar archivos de plantilla si se han actualizado" en la página "Rendimiento").
¡SÍ usted todavía necesita un módulo WEBP para Prestashop! Debido a que la función tiene un error en PS 8.0. Se debe fijar en PS 8.1 pero voy a comprobar esto tan pronto como se libera porque no sé si las imágenes JPG se mostrará a los navegadores que no pueden leer el formato WEBP como Safari (iPhone).
Ha sido muy complicado encontrar una configuración que funcione bien. No soy experto en la configuración de nginx así que supongo que hay otra manera de hacerlo. Si quieres mejorar esta configuración ponte en contacto conmigo, ¡estaré encantado de actualizar este post para ayudar a otras personas!
Aquí está mi solución (sea amable).
Antes de la sección "server", coloca este código:
map $http_accept $webp_enable { default 0; "~*webp" 1; }
Nos dirá si el navegador del visitante puede leer imágenes WEBP.
Probablemente tengas varias líneas de "rewrite" para todas las imágenes, coloca el siguiente código justo antes:
# 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; }
ADVERTENCIA: si está utilizando el módulo de compresión WEBP independiente, debe reemplazar 'jprestaspeedpack' por 'jprestawebp'.
¡Ponte en contacto conmigo si necesitas ayuda o si puedes mejorar el script!
Si la lista de selección de divisas ya no funciona, compruebe estas 2 opciones:
La opción "Ignorar URLs que coincidan con esta regex" debe incluir ".*SubmitCurrency=1.*", por ejemplo ".*[\?&]q=.*|.*SubmitCurrency=1.*"
La opción "Parámetros de URL ignorados" no debe incluir "submitcurrency,id_currency"
También puede desactivar la caché del navegador, porque si el visitante cambia la divisa después de ver varias páginas, si vuelve a esas páginas, se mostrará la divisa original.
No olvide borrar el módulo y la caché del navegador después de estos cambios.
sí, los navegadores que no puedan leer el formato WEBP obtendrán el formato original (JPG/PNG).
Cuando modificas un producto, una categoría, una página de CMS, un precio, el stock, etc. la caché se actualiza automáticamente.
Cuando agrega, elimina o modifica un módulo, debe borrar el caché manualmente porque esto no se puede detectar automáticamente. Por ejemplo, cuando modificas el slider de la página de inicio.
Cuando modifica el CSS o una plantilla de su tema, debe borrar el caché manualmente porque esto no se puede detectar automáticamente.
Cuando sincronizas o modificas tu catálogo, tus precios y/o tus stocks usando una aplicación externa, probablemente necesitarás borrar el caché manualmente o con un script porque los ganchos de Prestashop no se ejecutan.
Para borrar la caché de páginas específicas, puedes usar las URL CRON/API que encontrarás en el menú "API" en la configuración de Page Cache Ultimate. También puede usar la tabla de estadísticas para filtrar las páginas que desea actualizar, luego haga clic en el botón "Borrar caché (solo archivos)".
También tenga en cuenta que la memoria caché del navegador no se puede borrar, por eso está limitada en el tiempo.
Esto ocurre porque el enlace de inicio de sesión se carga dinámicamente y por lo tanto el parámetro "back" que hace referencia a la URL actual se establece con la URL de los módulos dinámicos.
Para evitar este problema, vaya a la configuración de Page Cache Ultimate, en el menú "Módulos dinámicos y widgets", en la parte inferior añada el siguiente código javascript en el campo "Javascript a ejecutar":
if (!prestashop_pc.customer.is_logged) {
$('header a').each(function() {
$(this).attr('href').replace('ajax%3Dtrue', '').replace('page_cache_dynamics_mods%3D=1', '')
});
}
Borra la caché y debería solucionarse el problema.
estos directorios se crean cuando la caché no se puede borrar completamente en PHP porque es demasiado larga y fallará con un error de tiempo de espera. Así que en lugar de borrar el directorio de caché, simplemente se renombra con este sufijo.
Puedes borrar todos estos directorios con el sufijo please_delete_me pero te recomiendo hacerlo directamente en la consola del servidor porque será demasiado largo hacerlo por FTP.
Estos hooks son para desarrolladores de módulos, contacta con el soporte si necesitas ayuda.
Aquí hay un ejemplo de cómo implementar las funciones de los hooks:
/** * 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']; }
El módulo Elementos Creativos le permite editar partes de su tienda con enlaces/botones que se muestran directamente en su tienda cuando está conectado a su admin Prestashop. Para preservar esta funcionalidad, la caché está desactivada con el motivo "editing-with-creative-element". Tenga la seguridad, sus visitantes se benefician de la caché, es sólo los usuarios conectados a la administración que no tienen una caché. Para obtener la caché, basta con mostrar la tienda en una pestaña privada de su navegador.
Lo primero es asegurarte de que tienes la última versión del módulo porque lo estoy mejorando constantemente para reducir el consumo de memoria, tanto en la base de datos como en el disco duro.
Lo segundo es ejecutar una purga periódicamente (cada 2 o 3 días). Una purga elimina de la caché las páginas que ya no existen o cuyo contexto ya no existe. Esto no afecta al rendimiento de la caché. Puede realizar una purga manualmente mediante un botón situado bajo la tabla de estadísticas de la caché, o programando una tarea CRON con la URL que aparece en el menú "API (URL CRON)" de la configuración del módulo.
Finalmente, si hay directorios en /var/cache/pagecache que terminan en "please_delete_me" entonces puede borrarlos. Se trata de una caché antigua que PHP no ha podido borrar por completo (demasiado larga).
El módulo no llama al Hook que permite la actualización.
Debe modificar la función imageResize() en el archivo /modules/prestablog/prestablog.php:
Reemplace esto
return ImageManager::write('jpg', $imagen_dest, $archivo_después);
Por esto
$ret = ImageManager::write('jpg', $imagen_destino, $archivo_después);
Hook::exec('actionOnImageResizeAfter', ['dst_file' => $file_after, 'file_type' => 'jpg']);
return $ret;
después tus imágenes se actualizarán.
La caché estática sólo puede utilizarse si se conoce el contexto del visitante. El contexto contiene una serie de informaciones que no pueden deducirse únicamente a partir de la URL: moneda, grupos de usuarios, elección de cookies, impuestos que deben aplicarse, etc.
Este contexto se almacena en una cookie llamada "jpresta_cache_context" que se añade cuando el usuario visualiza una 1ª página. Una vez que la cookie está presente, se puede utilizar la caché estática.
Vaya a la configuración del módulo, en el menú "Sistema de caché" asegúrese de que "Prestashop Static!" está seleccionado. Si ya está marcada, seleccione "Sistema de archivos estándar" y guardar, a continuación, seleccione "Prestashop estática" y guardar de nuevo. Esto reactivará la caché estática.
El mensaje "precios específicos para clientes" significa que está conectado a un usuario que tiene reglas de precios específicas, por lo que no tiene sentido crear una caché, ya que sólo él podrá beneficiarse de ellas. Es preferible crear grupos de usuarios y crear reglas de precios para estos grupos.
Quizás estás simulando una pantalla de teléfono utilizando la consola de tu navegador, lo que explica por qué estás viendo esta vista móvil a pesar de tener una pantalla de escritorio.
Esto ocurre porque una cookie llamada 'jpresta_cache_context' guarda el contexto del visitante en el navegador. Este contexto incluye información sobre si la vista es 'móvil' o 'de escritorio'. Por lo tanto, si inicialmente ves páginas en modo de escritorio y luego cambias a modo móvil, la caché seguirá entregando la vista de escritorio.
Si deseas probar la vista móvil utilizando la consola de tu navegador, asegúrate de eliminar la cookie 'jpresta_cache_context' antes.
No, el módulo solo convierte imágenes JPG/PNG a formato WEBP. Se recomienda importar imágenes como JPG porque algunos navegadores aún no pueden cargar archivos WEBP. Además, creo que los JPG son mejores como imágenes originales porque Prestashop crea múltiples formatos/tamaños de imágenes, por lo que la imagen original debe ser de buena calidad.
Si utiliza el módulo "Google Tag Manager Enhanced Ecommerce" creado por "Comptoir du code", asegúrese de obtener la última versión del módulo y habilite la opción específica para su uso con módulos de caché de página completa.
En cualquier caso, no es necesario marcar los módulos de Google Tag Manager como dinámicos.
Las puntuaciones calculadas por Pagespeed y GTMetrix incluyen una gran cantidad de parámetros cuya importancia varía dependiendo de si estás en un teléfono móvil o en un ordenador.
El módulo Prestashop Speed Pack te permite corregir los siguientes puntos reportados por Pagespeed Insight o GT Metrix:
- Reducir los tiempos de respuesta del servidor (TTFB)
- Servir imágenes en formatos de próxima generación
- Aplazar imágenes fuera de pantalla
Otros parámetros como LCP no pueden corregirse mediante un módulo. Por ejemplo, este LCP indica el retraso de visualización del elemento más grande que se muestra primero; a menudo se degrada por el uso de un carrusel que muestra imágenes en carga diferida o porque el código javascript que lo inicializa es demasiado lento. Este tipo de problema sólo se puede corregir manualmente.
Además, para asegurarse de que el cálculo de la puntuación se realizó con un caché disponible, ejecútelo dos veces.
Te invito a leer mi artículo para entender completamente esto puntuación Pagespeed para Prestashop .
Cuando valide los pasos de configuración, asegúrese de ejecutar la configuración automática en el paso 4. Esto configura el módulo Page Cache Ultimate para todos los módulos conocidos, como el carrito de compras. Debe confiar en esta configuración automática y solo realizar modificaciones manuales cuando algo no funcione como de costumbre cuando el caché está habilitado.
La puntuación calculada por Pagespeed y GTMetrix incluye una gran cantidad de parámetros cuya importancia varía dependiendo de si estás en un teléfono móvil o en un ordenador.
El módulo Prestashop Speed Pack te permite corregir los siguientes puntos reportados por Pagespeed Insight o GT Metrix:
- Reducir los tiempos de respuesta del servidor/TTFB (Page Cache Ultimate)
- Servicio de imágenes en formatos de próxima generación (compresión WEBP de imágenes)
- Aplazar imágenes fuera de la pantalla (carga diferida de imágenes)
Otros parámetros como el LCP no pueden corregirse mediante un módulo. Por ejemplo, este LCP indica el retraso de visualización del elemento más grande que se muestra primero; a menudo se degrada por el uso de un carrusel que muestra imágenes mediante un sistema de carga diferida o porque el código javascript que lo inicializa es demasiado lento. Este tipo de problema sólo se puede solucionar manualmente.
Además, para asegurarse de que el cálculo de la puntuación se realizó con un caché disponible, ejecútelo dos veces.
Te invito a leer mi artículo Comprender y mejorar la puntuación de Pagespeed de su tienda Prestashop
Una página puede tener múltiples versiones en caché dependiendo del contexto del visitante. Este contexto incluye información como la moneda seleccionada, el grupo del usuario, las preferencias del visitante en cuanto a cookies, las reglas fiscales aplicables para este visitante, el país del visitante si es relevante, etc. Por lo tanto, es posible que no reciba la página en caché cuando visualice una página porque su contexto es diferente.
Módulos como "Creative Slider" utilizan códigos cortos para facilitar la visualización de contenidos. Esto se suele hacer en el hook "actionOutputHTMLBefore" así que asegúrate de que el módulo de caché se coloca después de todos los módulos en este hook. Ve a "Diseño" > "Posiciones", marca la opción "Mostrar hooks no posicionables", busca el hook "actionOutputHTMLBefore" y mueve Page Cache Ultimate o el módulo Speed Pack al final.
Una vez hecho esto, debes borrar el caché.
Este error se debe a una nueva restricción de seguridad implementada por mi proveedor de alojamiento (OVH) en todos sus servidores.
Para resolverlo, debe actualizar mis módulos a la última versión.
No podrá hacerlo usando el módulo JPresta Easy Upgrade, ya que este también necesita ser actualizado.
Para realizar la actualización, hágalo a través de Addons o descargue el archivo zip desde su cuenta de JPresta. Para Page Cache Ultimate y Speed Pack, debe extraer el zip para encontrar el que coincida con su versión de PrestaShop. Una vez que tenga el archivo zip correcto, instálelo como un nuevo módulo para actualizar su versión actual, preservando la configuración.
No se preocupe, después de esto, podrá continuar actualizando con JPresta Easy Upgrade como de costumbre.