Supongamos que cambiamos mucha funcionalidad para el módulo (plantillas, diseños, CSS) y vamos a mover estos cambios al sitio de producción, pero muchos clientes han almacenado en caché CSS en sus navegadores. Entonces aquí hay una pregunta. Cómo forzar el vaciado de la caché CSS del cliente y evitar el cambio de nombre del archivo ( styles.css
-> styles-v2.css
). Hay una forma lógica, pero no funciona en Magento, porque verifica el archivo existente (por cierto, este método funciona para archivos JS), vea a continuación:
<action method="addCss">
<stylesheet>css/styles.css?1</stylesheet>
</action>
¿Algunas ideas?
Puede usar el módulo OpenSource Aoe_JsCssTstamp que agrega información de marca de tiempo a los archivos CSS combinados. Sin embargo, las marcas de tiempo para archivos CSS simples (no fusionados) aún no son compatibles, pero esto sería fácil de implementar.
fuente
Hay una extensión gratuita en github 'Magento Cachebuster' que hace exactamente esto. Es re
https://github.com/gknoppe-guidance/magento-cachebuster
fuente
Utilizo mi propia extensión Speedster Advanced para esto. Pero el principio básico es que el nombre de los archivos css y js combinados incluye la marca de tiempo del último archivo modificado - vea
Mage_Core_Model_Design_Package::getMergedCssUrl()
. Cada vez que edita cualquiera de los archivos CSS, se crea un nuevo nombre de archivo, lo que hace que los navegadores soliciten el nuevo archivo en lugar de reutilizar la versión en caché. Como su bloque de cabeza puede estar en caché, se necesita una actualización de caché de Magento.fuente
También he implementado un buster de caché para archivos css. Supongo que la mejor manera es extender Mage_Page_Block_Html_Head y anular la función a continuación y actualizar la matriz $ skinItems con los cambios deseados.
Tengo la inspiración de aquí. Fuente
fuente
Hay una solución simple pero engorrosa que no requiere ningún complemento y solo usa capacidades integradas de Magento, útil si solo tiene que hacerlo rápidamente en un sitio existente sin querer arriesgarse a instalar más código.
La idea es que puede usar el sistema CSS fusionado para generar un nombre de archivo de almacenamiento en caché.
Como el nombre del archivo CSS combinado es un hash de todos los archivos que se combinan, simplemente agregue un archivo css en blanco adicional al tema con una marca de fecha para un nombre.
Entonces:
<action method="addCss"><stylesheet>css/cachebust_091014.css</stylesheet></action>
¡Ahora empuje eso en vivo y vacíe el caché de magento, el archivo css combinado ahora tendrá un nombre diferente y sus cachés serán destruidas!
Es engorroso, ya que cada vez que quieres reventar el caché necesitas cambiar ese nombre de archivo, pero no requiere nada más que las capacidades integradas de Magento, ¡así que es útil si te encuentras atascado y necesitas una solución rápida!
fuente
=> En lugar de usar este código:
=> Intenta usar este código:
Pero no es muy agradable ...
fuente
Encontré un módulo que agregará una cadena de consulta al final de todos los CSS y JS en diseños xml. La cadena de consulta es configurable desde el administrador.
https://github.com/mklooss/Loewenstark_Head
La idea básica es anular
_prepareStaticAndSkinElements
para incluir una cadena de consulta, como se hizo en el módulo, que se muestra a continuación.fuente
Si entiendo la solución propuesta en su pregunta, puede hacerlo con un ligero mod en un archivo central (en realidad no edite el archivo central ):
Agregue algo como? V = 1 a la línea 198 para que todos los archivos css tengan esto adjunto:
fuente
Creo que Fooman Speedster Advanced ( http://www.magentocommerce.com/magento-connect/fooman-speedsteradvanced-4030.html ) podría ser una solución:
"Totalmente automatizado una vez instalado, con versiones automáticas cuando se actualizan los archivos Javascript / CSS"
fuente
He creado un módulo gratuito para esto:
http://www.magentocommerce.com/magento-connect/frontend-flush-2048.html
Avíseme si no funciona como se esperaba, pero lo he creado para que los archivos js y css combinados tengan un hash diferente si el contenido de uno de los archivos concatenados ha cambiado. Por defecto, Magento solo cambia el hash del archivo combinado si el nombre de archivo de uno de los archivos incluidos ha cambiado.
ACTUALIZAR
También hice un módulo minify gratuito y simple para aquellos de ustedes que creen en él.
http://www.magentocommerce.com/magento-connect/minify-7771.html
fuente
Hay un módulo realmente bueno creado por Fabrizio Branca que hace exactamente lo que le interesa. Se llama AOE_JsCSSTStamp . ¿Que hace? Agrega una marca de tiempo a los recursos CSS y JS. Cuando vacías el caché CSS / JS, las marcas de tiempo se recrean.
El navegador verá un nombre de archivo diferente, es por eso que volverá a descargar los recursos nuevamente y se servirá con el más reciente en lugar de almacenarse en caché en el navegador.
fuente
Simplemente edite el método getCssJsHtml en Mage_Page_Block_Html_Head , agregue una cadena como esta durante unos días después de la edición css y eso es todo ... simplemente funciona
fuente
Pocos años después y al no encontrar ninguna extensión útil que no combine archivos y es simple, creé la mía. La idea principal es que después de vaciar la memoria caché, actualizará la marca de tiempo. En otras palabras, cuando cambie algunos
css/js
, simplemente vacíe el caché y se actualizará Timestamp.fuente
Haga una copia de su tema con un nuevo nombre (themev2): diseño y aplicación / diseño, etc. Luego elija el nuevo tema en admin.
fuente