Tecnología y Coaching para Emprendedores

Haz Que WordPress Cargue Mucho Más Rápido vía .htaccess

wordpress

Tener sitios web bien optimizados ya no es una opción, sino un requisito en toda la regla. Un punto que a veces no tenemos en cuenta es que cuando cambiamos de servidor, algunos parámetros se desconfiguran, por lo que podemos pasar de tener un alto rendimiento web a tener una web que tarda mucho en cargar. Hay herramientas que nos permiten gestionar el tiempo de carga, por lo que debemos comprobar si hay algún cambio siempre que añadamos nuevos plugins o cambiemos de servidor.

Recientemente cambié de servidor y el rendimiento de esta web cayó en picado. Lo normal es darle la culpa al servidor, pensando que es malo, pero no siempre es así. Lo único que faltaba era configurar correctamente el archivo .htaccess, que es un archivo de Apache. Modifiqué mi archivo .htaccess y voilà, se hizo la luz, de nuevo vuelve a ir rápido.

Configuración de .htaccess

Si quieres que la velocidad de carga de tu WordPress aumente notablemente, entonces sólo has de añadir este código a tu archivo .htaccess:

# BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
# END Expire headers

# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "max-age=216000, private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "max-age=600, private, must-revalidate"
</filesMatch>
</ifModule>
# END Cache-Control Headers

# BEGIN Compress text files
<ifModule mod_deflate.c>
<filesMatch "\.(css|js|x?html?|php)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
# END Compress text files

Importante: .htaccess es un archivo clave en el funcionamiento del servidor web que has contratado, por lo que haz siempre una copia de seguridad antes de modificar nada.

Con este código, olvídate de utilizar plugins como W3 Total Cache, pues hace no sólo lo mismo, sino que mejor.


Comentarios

  • Ser

    Hola! Gracias Sandra por el aporte. ¿Con esto ya no necesitaría usar WP Super Cache o similar? Sería lo suyo porque a veces me da problemas al refrescar las páginas…

  • juan

    Excelente, muchas gracias, funciona muy bien, ahora hay que ver si todos los servidores lo acepta (algunos no quieren saber nada con muchas cosas). Pero con tal de sacar el super cache cualquier cosa je.

  • Luis

    En la parte de contenido comprimido creo que podría se mejor así:

    SetOutputFilter DEFLATE
    AddOutputFilterByType DEFLATE text/plain text/html text/xml application/xml application/xhtml+xml application/rss+xml
    AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    Un saludo y gracias por la información el resultado es muy bueno.

  • Eduardo

    Hola Sandra,
    Muy buen post pero tengo una duda… ¿este código puede usarse también con Joomla o es exclusivo de WordPress? Muchas gracias con antelación.

    • Jose SEO

      Efectivamente puede servir para Joomla o cualquier otro gestor de contenidos o incluso para una página estática, siempre que se añada antes de las líneas propias que tiene el htaccess original. Si al implantarlo generase un error 500 de configuración del servidor, habria que probar quitando instrucciones hasta que funcionase de nuevo como antes.
      En cualquier caso es un excelente aporte, gracias por compartirlo.

  • Muruagagatonegro

    Una duda, accedo por ftp a mi sitio y me encuentro con varios .htaccess en la raiz de mi sitio, en la carpeta public-html y en la carpeta de mi blog de wordpress, ¿cual es el que tengo que reemplazar?, muchas gracias

    • Sandra

      es el de la carpeta public-html, aunque antes de reemplazarlo haz una copia de seguridad por si acaso

  • DuskWalker

    Probado en mi blog con wordpress y va de perlas.
    Gracias por el aporte!

  • Juvinao

    Añadido el codigo y probando en uno de mis blogs de WordPress, aunque preferiblemente uso Blogger en mis proyectos.

    Excelente blog, gracias por compartir tus conocimientos..

    Saludos desde Colombia

  • Juan Carlos Celaya

    Hola a todos,

    Lo que hace este codigo es forzar al navegador a guardar las imagenes, js, css, etc en cache mas tiempo, y comprimir los ficheros de texto plano (css y js mayormente) para que cargue mas rapido.

    No esta mal, pero no hace todo lo que el w3 total cache ni mucho menos. Esto solo sirve para cuando cargan la web por 2ª vez, la primera tardara lo mismo. Y si teneis muchas visitas simultaneas (Efecto meneame por ejemplo, o enlace de sitio muy popular) no os sirve de nada.

    Lo comento porque veo que alegremente se dice que se puede quitar w3 total cache, y luego os puede dar problemas si se produce un pico de trafico.

    Saludos!

    • Eddy

      Siempre es más interesante aprender como funcionan las cosas (y hacerlas manualmente) que depender totalmente de un plugin. Por cierto, no seria mala idea añadir esta linea a nuestro . htaccess para evitar que naveguen libremente por nuestras carpetas de WP

      Options -Indexes

  • Cosme

    Gracias por el codigo, Una pregunta: para usarlo ¿es conveniente o necesario poner cache true en wp-config.php?

    • Sandra

      Yo no lo he puesto y me ha funcionado bien, puedes probarlo a ver..

  • Jose Coronel

    wawwwww!!!!, impresionante!!!, me encanto esto, ahora VUELAAAAA MI SITIO EN LA CARGA! jaja, perdon, me emocione… les cuento que cometia el error de modificarlo en html, no me andaba hasta que cambie a uf8 php y ahi me tomo los cambios, el error 500 no me lo tiro mas y la verdad me emociono la super diferencia! GRACIAS!.

    • Sandra

      Hola Jose, sí, es una pasada, acelera mucho el sitio en WordPress, me alegro te haya servido!

  • Viviana

    Hola Sandra!

    Muchas gracias por la buena información que publicas, tienes un excelente blog, está entre mis favoritos!

    Este es mi archivo .htaccess actual:

    AddHandler x-httpd-php5-3 .php

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    En qué lugar exacto debo añadir el nuevo código?

    Saludos desde Buenos Aires!

    • Sandra

      Hola Viviana,

      lo puedes poner justo debajo, te recomiendo hacer antes una copia de seguridad.

      Un saludo!
      Sandra

      • Viviana

        Muchas gracias Sandra!

  • Luis

    Hola Sandra, acabo de leer tu artículo y he mejorado considerablemente la velocidad de carga!!!!!!!mil gracias!!!, También quería comentarte que he notado que cuando activo KEEP Alive (en htaccess) mejora bastante la nota de Page Speed Grade a 91%. Pero también he leído que puede llegar a consumir mucha RAM del servidor. Estoy un poco perdido porque no se si será conveniente o no aunque mejore la nota en GTmetrix. Tu página va bastante rápido a la hora de cargar, he sido un poco cotilla y he hecho un escaneo con GTmetrix y he visto que usas KEEP Alive. Simplemente lo activaste o se necesita de alguna configuración algo más compleja? Gracias por el artículo ya que gané en velocidad de carga y ojalá puedas ayudarme con esta duda ;)

    Un saludo

  • Paco

    Hola Sandra,

    Tengo varios .htaccess, en raiz, en logs, dentro de logs en traffic.html y en la carpeta del blog, en principio lo puse en la carpeta del blog pero despues de leer los comentarios estoy perdido.

    un saludo.

    • eSandra

      Mejor pregunta a tu hosting, no te sé decir sin verlo..

  • Ivan

    Hola, el articulo esta muy bien, en mi caso lo he probado y me da erroro 505 o algo asi, puede ser porque desntro del codigo hay enlaces con esandra.com ? lt;filesMatch "\.(<a href="http://www.esandra.com/out/javascript&quot; title="Libro Murach's JavaScript" class="pretty-link-keyword"

    borrando estos apartados me ira ?
    Gracias de antemano

    • eSandra

      Buenas Ivan, gracias por avisar, era un error que daba un plugin. Ya lo he solucionado, si copias el código ahora te debería funcionar, lo que por si acaso haz una copia de seguridad antes, jeje.. un abrazo!

  • Ivan

    Hola sandra, lo he copiado y aunque ya no me da error nome funciona, puede ser porque tengo intalada wp super cache y wp minify ?

    Muchas gracias de anetemano

    • admin

      Hola, Ivan, te contesto por correo electrónico!! Un saludo!

    • Iván

      Esperando con ganas el correo, para ver como funciona y dar velocidad a mi web.

      Muchas gracias de antemano por las molestias. Me encanta el blog . =)