W3 Total Cache, CDN y archivos de tema [cerrado]

10

Actualicé el archivo style.css de mi instalación de WordPress recientemente. El cambio fue efectivo: cuando inicié sesión como administrador (mi blog está configurado para que el administrador nunca reciba una versión en caché del sitio, sino una "en vivo"), puedo verlos.

Pero mi blog se está sirviendo a través de un CDN (usando W3 Total Cache). A través de la CDN, los cambios no son efectivos: la CDN no sirve los archivos modificados de mi tema. Aunque los he subido después de la modificación (Panel> Rendimiento> CDN> Subir archivos de tema.

Mi CDN se ejecuta en AmazonCloud Front. Y Minify está deshabilitado en W3 Total Cache.

El archivo de tema que se sirve a través de mi CDN es una versión comprimida: style.css.gzip

¿Debo "purgar" objetos de mi CDN o esperar un poco más (ha pasado más de una semana)? Y sí, vacío el caché del navegador que estoy usando para ver si los cambios surten efecto. ¿O hay algo más que me estoy perdiendo?

Gracias,

pags.

Parneix
fuente

Respuestas:

10

Usted necesita

  1. Versione sus archivos (llamándolo style.css?ver=xxx.xxx) y asegúrese de que su distribución de CloudFront tenga activadas las "Cadenas de consulta directa". Esta es la mejor opción, ya que significa que todo lo que necesita hacer es incrementar el número en la cadena de consulta y CloudFront buscará este archivo automáticamente.

  2. Invalide manualmente sus archivos a través de la consola de AWS (hay una pestaña de invalidación cuando edita su distribución)

Para activar 'Reenviar cadenas de consulta', haga lo siguiente:

  • Edite su distribución de Cloudfront marcando la casilla de verificación a la izquierda de la 'i' y luego haga clic en el botón "configuración de distribución" en la barra de herramientas
  • Vaya a la pestaña Comportamientos
  • Seleccione la línea y haga clic en 'Editar'
  • Cambie "cadenas de consulta directa" a Sí
  • Haga clic en "Sí, editar"
anu
fuente
1
@kaiser sí, la fecha y hora como la versión es la mejor manera de versionar el archivo. Sin embargo, aún debe asegurarse de que la opción "Cadenas de consulta directa" esté activada en CloudFront, de lo contrario su número de versión bien diseñado se ignorará: P
anu
Gracias. Tengo dos preguntas para usted ya que no estoy familiarizado con este procedimiento. 1) El nombre de los archivos "versionados" debe seguir exactamente el ejemplo que dio (con el signo de interrogación, los signos de igual y reemplazar todas las "x" con los números de mi elección) ¿verdad? 2) En mi consola de AWS para CLoudFront, hago clic en el "I" a la izquierda de la tabla justo al lado de la distribución que creé para mi blog. Esto me permite acceder a la configuración de la distribución. Allí puedo ver que las "cadenas de consulta directa" son "falsas". ¿Debo replicar este "comportamiento" con los mismos valores pero con "verdadero" para "For. Q. strings"
Parneix
1
1. sí o puede usar la respuesta bien intencionada pero incompleta de @ kaiser para nombrar su archivo. 2. Actualizaré la respuesta con el proceso
anu
8

Hay un "truco" bastante simple para evitar el almacenamiento en caché, cuando el contenido del archivo cambia: agregue un número de versión, que esté configurado en la última fecha / hora en que cambió su archivo.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

Esto se agregará ?ver=0123456789a su enlace de referencia style.css en su encabezado. El número de versión solo cambiará cuando se modifique el contenido de los archivos. Entonces, tiene una solución que funciona perfectamente con a) caché del lado del servidor b) caché del navegador y se actualiza automáticamente.

emperador
fuente
Ok, esa es una opción realmente interesante: elimina la necesidad de versionar manualmente mi style.cssarchivo después de cada modificación (lo que olvidaré hacer en un momento u otro). Ahora, si puedo preguntar, ¿dónde agrego este código? Supongo que a mi functions.phparchivo?
Parneix
No sé dónde necesitas agregar este código. Simplemente busque a través de sus archivos de temas y reemplace la llamada "normal" al archivo style.css. Publicaré una breve actualización, para que pueda ponerla en su archivo functions.php (esto todavía significa que debe eliminar la llamada original). Y por cierto: esto es solo una adición a @anu answer. (Los votos positivos aún son apreciados :)
kaiser
1
¡No hay problema! Entiendo perfectamente que es probable que la ubicación de este código cambie según el tema utilizado. Me las arreglaré para agregarlo a mi functions.phparchivo. Sigo pensando que es un buen complemento para la solución proporcionada por @anu. Muchas gracias por la ayuda.
Parneix
-1

una respuesta corta ...

  1. Elimine todos sus archivos de tema y vuelva a cargarlos. algunas veces la acción de borrar borra el CDN

  2. Sí, podría intentar Purgar, pero Eliminar y volver a cargar suele ser más rápido.

  3. Consulte también la configuración en W3TC y en Amazon. La caché predeterminada para W3TC suele ser de 365 días. que es 31536000 segundos :)

En Amazon ... habrá una configuración para que los puntos finales vuelvan a consultar el CDN. Sé que en Rackspace el valor predeterminado es de 24 horas.

Damien
fuente
1
Hay formas mucho mejores de hacerlo que esto, vea mi respuesta
anu
"Elimine todos sus archivos de tema y vuelva a cargarlos. algunas veces la acción de borrar borra el CDN "¿Quieres decir que los elimine en mi sitio web, verdad? Luego, vuelva a subirlos en mi instalación de WordPress. ¿Y luego supongo que vuelvo a hacer "Subir archivos de tema" a través del panel de W3 Total Cache?
Parneix
1
@Parneix en serio, no elimines todo a menos que sea necesario. Es casi seguro que no funcionará a menos que elimine todo de la CDN también. Hay MUCHAS mejores formas de invalidar su archivo CSS obsoleto
anu
1
¡Si gracias! Tomé buena nota de tu sugerencia. Realmente aprecio toda la ayuda que estoy recibiendo aquí. No solo estoy resolviendo mi problema, sino que también estoy aprendiendo cosas nuevas.
Parneix