Cómo activar la caché del navegador en WordPress de forma efectiva

  • Autor Autor Cyber
  • Fecha de inicio Fecha de inicio
C

Cyber

Épsilon
Hola Betas,

Ando queriendo especificar la caché del navegador para un blog en WP. Ya probé muchos códigos, pero luego de implementarlos escaneo con la herramienta Enlace eliminado y me dice que la caché sigue deshabilitada.

¿La herramienta no sirve?

¿Tienes algún código que uses y que funcione?

Gracias!!!
 
Yo tb llevo mucho tiempo buscando algo asi para mi blog, no consigo cachearlo.
 
Yo tb llevo mucho tiempo buscando algo asi para mi blog, no consigo cachearlo.

Igual, aclaro por si estamos hablando de cosas diferentes. Lo que yo buscaba era habilitar el caché del navegador, no cachear el sitio en el servidor. Saludos!
 
¿Preguntas cómo hacer que el servidor envíe las cabeceras necesarias en la respuesta HTTP para que el navegador cachee la página?
W3 Super Cache, que yo sepa, lo tiene integrado o, al menos, se puede configurar para ello.
 
¿Preguntas cómo hacer que el servidor envíe las cabeceras necesarias en la respuesta HTTP para que el navegador cachee la página?
W3 Super Cache, que yo sepa, lo tiene integrado o, al menos, se puede configurar para ello.

Si, eso mismo preguntaba. Pero como le dije a Night en el comentario de arriba, prefiero no usar esos plugs "avanzados". Igual, gracias!! :encouragement:
 
Si, eso mismo preguntaba. Pero como le dije a Night en el comentario de arriba, prefiero no usar esos plugs "avanzados". Igual, gracias!! :encouragement:

No hay problema. Mira, un .htaccess con valores que puedes cambiar. Los valores están en segundos.
Insertar CODE, HTML o PHP:
# 1 YEAR
<filesMatch "\.(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
</filesMatch>
# 1 WEEK
<filesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
# 2 DAYS
<filesMatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
</filesMatch>
# 1 MIN
<filesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</filesMatch>
¿Necesitas ayuda para entender la sintaxis de estos bloques de ejemplo?
 
No hay problema. Mira, un .htaccess con valores que puedes cambiar. Los valores están en segundos.
Insertar CODE, HTML o PHP:
# 1 YEAR
<filesMatch "\.(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
</filesMatch>
# 1 WEEK
<filesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
# 2 DAYS
<filesMatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
</filesMatch>
# 1 MIN
<filesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</filesMatch>
¿Necesitas ayuda para entender la sintaxis de estos bloques de ejemplo?

Básicamente me falta mucho para poder programar algo así, aunque de tantos que he visto ya, algo entiendo. Lo que me gustaría que me aclares, si no es molestia, es porque los primeros son "public" y los segundos "private". Y me interesa también el porque de "proxy-revalidate".

Tengo una grán duda, por lo que he quitado los .js de la lista. ¿Podría afectar ésto a los anuncios de adsense? Porque se estarían cacheando sus .js en el navegador del usuario, en vez de cargarse cada ver que ingrese a una página.

Ahora voy a probarlo, en unos minutos te digo si funciona. Gracias!! :encouragement:

pd: por cierto, que significa que se cachea el "php" ¿eso no se ejecuta a nivel de servidor??
 
a) la caché de wordpress se activa en el archivo de configuración con un simple "enable" aunque no sé si necesita algún soporte adicional
b) quickache se activa con un clic...

De pronto este artículo te ayude

Usando la caché interna de Wordpress | aNieto2K
 
No afectaría a la publicidad ya que se carga desde servidores externos. Estas cabeceras se envían con los archivos que el servidor devuelve... no hay manera de controlar el caché de servidores externos con cabeceras, que ahora recuerde.
Si me dices cómo quieres que sea el caché, yo te lo adapto. (Quiero que las imágenes sólo se actualicen cada semana, y las páginas HTML/PHP cada día...)

Y sí, el PHP se cachea. Pero es que el HTML también. Estás pidiendo a Firefox, Chrome... que haga el caché por tí. Los PHP van a seguir generándose cada vez que un cliente lo solicite (y eso debería ocurrir siempre que hayan pasado los tiempos de caché predeterminados).

public
Indicates that the response MAY be cached by any cache, even if it would normally be non-cacheable or cacheable only within a non- shared cache. (See also Authorization, section 14.8, for additional details.)

private
Indicates that all or part of the response message is intended for a single user and MUST NOT be cached by a shared cache. This allows an origin server to state that the specified parts of the
response are intended for only one user and are not a valid response for requests by other users. A private (non-shared) cache MAY cache the response.
Note: This usage of the word private only controls where the response may be cached, and cannot ensure the privacy of the message content.

no-cache
If the no-cache directive does not specify a field-name, then a cache MUST NOT use the response to satisfy a subsequent request without successful revalidation with the origin server. This allows an origin server to prevent caching even by caches that have been configured to return stale responses to client requests.
If the no-cache directive does specify one or more field-names, then a cache MAY use the response to satisfy a subsequent request, subject to any other restrictions on caching. However, the specified field-name(s) MUST NOT be sent in the response to a subsequent request without successful revalidation with the origin server. This allows an origin server to prevent the re-use of certain header fields in a response, while still allowing caching of the rest of the response.
Note: Most HTTP/1.0 caches will not recognize or obey this directive.
 
Última edición:
a) la caché de wordpress se activa en el archivo de configuración con un simple "enable" aunque no sé si necesita algún soporte adicional
b) quickache se activa con un clic...

De pronto este artículo te ayude

Usando la caché interna de Wordpress | aNieto2K

Antes que nada muchas gracias ramonjosegn. Sabes que he leído ese artículo, incluso otros más. He agregado la línea en wp-config, pues no la tenía. Incluso creé una carpeta en donde supuestamente iba a guardarse la caché, pero siempre está vacía. Leo varias veces el artículo que me pasaste y me parece que soy demasiado bruto, porque no entiendo cómo y para qué usar todas esas variables 🙁

Lo que no logro también entender es, de una forma sencilla, para que sirve esa cache interna de WP.

Gracias!!:encouragement:
 
Disculpen y aprovecho el thread pero yo tengo un problema de caché en wordpress uso el script de geo ip de adjal y w3 total cache el problema yace en que el script no funciona bien porque se queda en caché la ultima visita antes del barrido 🙁... Es decir que si visitó uno de españa antes el barrido pues a los demás le mostrará anuncios para españa 🙁
 
Disculpen y aprovecho el thread pero yo tengo un problema de caché en wordpress uso el script de geo ip de adjal y w3 total cache el problema yace en que el script no funciona bien porque se queda en caché la ultima visita antes del barrido 🙁... Es decir que si visitó uno de españa antes el barrido pues a los demás le mostrará anuncios para españa 🙁
Usa algo en la QUERY_STRING. Por ejemplo, si la dirección es
Insertar CODE, HTML o PHP:
http://www.example.com/
tienes que probar con
Insertar CODE, HTML o PHP:
http://www.example.com/?nc2=2
Creo que con eso se soluciona, con la configuración por defecto. Aunque, si no te da resultado... ve cambiando la URL usando scripts que ya existen, para que añada un nº aleatorio en lugar del 2.

La mejor solución sería usar una URL que no esté usando la caché... un subdominio sería muy sencillo, por ejemplo.
 
[MENTION=24248]NetGratis EU[/MENTION] fíjate que acabo de poner el código que me pasate dejando los archivos .js para que también se cacheen. Luego miré con Pagespeed de Firebug y los .js de los anuncios tienen definida una caché de 1 hora, cuando yo configuré todo para que tenga 1 semana. Eso te da la razón en lo que dices.

Créeme que no sabía que el php se podía cachear en el navegador del usuario, yo pensé que el mismo sólo recibía datos en html y afines.

Aprovecho, ya que noté que sabes tanto, para preguntarte algo un poco mas "complicado", que hace semanas que intento entender pero no logro. Resulta que la herramienta que mecioné antes, me indica que tengo una falencia grave, y me recomienda "Habilitar Keep-Alive".

Muchas gracias igual por el ofrecimiento de personalizarme el código (creo ya haber entendido como hacerlo), y por toda la ayuda que me estas brindando. Gracias!! :encouragement:
 
Sin problemas 🙂

Créeme que no sabía que el php se podía cachear en el navegador del usuario, yo pensé que el mismo sólo recibía datos en html y afines.
Es que, técnicamente, el navegador no distingue entre HTML y PHP: eso lo hace el servidor; el navegador simplemente recibe el archivo y lo interpreta como HTML.

Aprovecho, ya que noté que sabes tanto, para preguntarte algo un poco mas "complicado", que hace semanas que intento entender pero no logro. Resulta que la herramienta que mecioné antes, me indica que tengo una falencia grave, y me recomienda "Habilitar Keep-Alive".
Por supuesto. Tienes que añadir esto a httpd.conf:
Insertar CODE, HTML o PHP:
KeepAlive On
Aunque estoy asumiendo que no estás en alojamiento compartido. En ese caso, no hay manera, a mi entender, de configurar eso sin que el hosting lo añada para todo el servidor.
Puedes comprobar el Keep Alive tú mismo: si no ves "Connection: Keep-Alive" entre los headers de tu web, no está configurado de esa manera.
 
Sin problemas 🙂


Es que, técnicamente, el navegador no distingue entre HTML y PHP: eso lo hace el servidor; el navegador simplemente recibe el archivo y lo interpreta como HTML.


Por supuesto. Tienes que añadir esto a httpd.conf:
Insertar CODE, HTML o PHP:
KeepAlive On
Aunque estoy asumiendo que no estás en alojamiento compartido. En ese caso, no hay manera, a mi entender, de configurar eso sin que el hosting lo añada para todo el servidor.
Puedes comprobar el Keep Alive tú mismo: si no ves "Connection: Keep-Alive" entre los headers de tu web, no está configurado de esa manera.

Gracias por aclararme lo del cacheo de php.

Lamentablemente estoy en un compartido 🙁. Lo curioso es que para unos blogs me dice que no tengo activo el "Keep Alive", mientras que para otros que están en el mismo servidor sí. Por eso me desconcierta un poco.

Me queda una última pregunta. Para ver los encabezados como dices ¿sólo tendría que mirar en el código de fuente del blog, una vez cargado en el navegador? Gracias!!! :encouragement:
 
No, para ello necesitas Firebug (veo que ya lo usas) o similar. Son los HTTP headers (cabeceras HTTP) de la respuesta del servidor. También las puedes ver en sitios como http://web-sniffer.net/
 
No, para ello necesitas Firebug (veo que ya lo usas) o similar. Son los HTTP headers (cabeceras HTTP) de la respuesta del servidor. También las puedes ver en sitios como View HTTP Request and Response Header

Perfecto!! Muchas gracias por pasarme la herramienta!!!

La respuesta que obtengo es la misma en todos los sitios: Connection: close[CRLF]

Incluso he testeado sitios de otros usuarios "mas profesionales" del foro, y es igual. Así que no creo que sea tan importante ¿o si?

Muchísimas gracias por todo, realmente gracias :encouragement:
 
Perfecto!! Muchas gracias por pasarme la herramienta!!!

La respuesta que obtengo es la misma en todos los sitios: Connection: close[CRLF]

Incluso he testeado sitios de otros usuarios "mas profesionales" del foro, y es igual. Así que no creo que sea tan importante ¿o si?

Muchísimas gracias por todo, realmente gracias :encouragement:

Ya te he dicho. En lo que se pueda ayudar 🙂

Si afecta a tu rendimiento, es importante. Pero si la velocidad no es lenta, no hay problema. Aunque te da una ventaja extra ante tus competidores en Google.
Una pregunta. Cuando probaste, en su momento, plugins de cacheo, ¿cambiaste los permisos de la carpeta que creaste (CHMOD)?
 
Atrás
Arriba