entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Que sistema de caché usar

Estoy desarrollando una página web con Laravel en PHP claro. La mayoría de analizadores de páginas web me han dicho que debo usar un sistema de caché para los archivos e imágenes. He estado investigando y he visto tres métodos principales:
-Usar meta tags en html con el atributo "expire"
-Usar headers en PHP
-Declaralo en el .htacces.

¿Qué diferencia hay entre estos sistemas?
¿Cuál me recomendáis?

Saludos y gracias.

1 Respuesta

4votos

carlossevi Puntos63580

En primer lugar me gustaría aclarar un concepto que quizá tu ya tienes claro: diferencia la caché del navegador web (lado cliente) con una posible caché en el servidor (lado servidor).

Cualquier solución de caché en el lado del servidor (relacionado con Laravel o PHP) facilita que las páginas dinámicas se generen más rápido, consuman menos recursos del servidor o incluso se omita su generación y se utilice una versión anterior. Quería aclararlo porque en tu pregunta mencionas PHP y Laravel, y sobre ellos podría aplicarse este otro tipo de cacheado.

A la caché que tu te refieres es la caché del navegador, que hace que éste guarde una versión de los archivos de la página (imágenes, ficheros javascript, css...) para no descargarlos cada vez que el cliente los necesita.

Para que pueda utilizarse este tipo de caché, tu página tiene que darle al navegador del usuario unas directivas que indiquen si el contenido debe cachearse o no (si es un contenido que cambia continuamente no conviene que el navegador lo guarde). Esas directivas, se le pueden indicar al navegador de dos maneras:

  1. A nivel del protocolo HTTP (tanto el .htaccess como el header)
  2. A nivel de sintáxis HTML (solución de meta etiquetas)

Es más completa la solución a nivel de protocolo HTTP porque tiene mayor soporte con los navegadores y es respetada por otros dispositivos como proxies, pero en la mayoría de casos de uso ambas funcionan bien.

A nivel de protocolo configurarlo en el .htaccess o mediante un header especificado no tiene diferencias porque el resultado es el mismo. Lo que hace el .htaccess es indicarle al servidor web que añada automáticamente el header a todas las respuestas, mientras que de la otra manera le indicas a qué respuesta concreta le cambias el header. Podría decirse que una solución es la regla general (.htacess) y la otra la regla particular (colocar manualmente el header).

0voto

Leonardo-Tadei comentado

Excelente respuesta, Carlos. +1

Aprovecho para agregar que la única caché sobre la que se tiene control es la del lado del servidor: el cliente siempre puede sobrescribir o ingnorar las directivas.

Cuando los analizadores dicen que debés usar una caché, es más probable que se refieran a la del lado del servidor que a la del lado del cliente...

0voto

carlossevi comentado

Gracias por el feedback Leonardo. Buen apunte respecto a que no tenemos control sobre la caché del lado del cliente, aunque suponemos que como es en su beneficio no la "saboteará".

Discrepo sobre la dirección del consejo ya que si de verdad está analizando la página y dando consejos en base a una situación concreta y no sobre conceptos generalistas, en realidad no es posible que el analizador sepa si una página está implementando soluciones de caché en el lado del servidor. Lo único que podrían conocer es si la página está dando directrices de caché en el lado del cliente.

Los buscadores premian a las páginas "bien hechas" y que tienen tiempos de carga rápidos. Por un lado miden realmente esos tiempos de carga y por otro se fijan en la sintaxis y en la aplicación buenas prácticas como esta así que me parece plausible que el consejo fuera en esta dirección.

¡Un saludo!

0voto

Leonardo-Tadei comentado

Hola Carlos,

entiendo tu punto de vista, pero habría que ver el resultado del analizador que se menciona en la pregunta. He visto varios que por no detectar CDNs por ejemplo, aconsejan usarlas, y esto no es nada que tenga que ver con el cliente.

Generalmente las cachés para archivos estáticos del lado del servidor están en un dominio o al menos directorio aparte, y hay analizadores que analizando los URL y las cabeceras de la respuestas buscando proxies determinan que no son cachés.

De todas formas, como te decía, son suposiciones (pero bien fundadas) sobre algunos analizadores que he usado. Conocer el analizador usado nos sacaría la duda a ambos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta