La palabra procede del inglés cache («escondite secreto para guardar mercancías, habitualmente de contrabando»), y esta a su vez del francés caché, («escondido u oculto»). – Wikipedia
En informática, el almacenamiento en caché es el proceso mediante el cual la información a la que recurrimos de manera frecuente se queda almacenada en memoria, una memoria de fácil acceso (generalmente mucho más fácil que la memoria de origen de los datos).
Esto se puede utilizar en cualquier dispositivo que tenga memoria, de manera que si hemos accedido antes a esta información y queda almacenada en esta memoria intermedia, será mucho más fácil y rápido de acceder la próxima vez, reduciendo de esta forma los tiempos de respuesta.
Aplicado a la web, el almacenamiento caché está en dividido en diferentes memorias entre el usuario y el servidor, el almacenamiento en estas memorias, reduce los tiempos de carga y hace que la interacción con el usuario sea más fluida, mejorando así la experiencia de usuario.
Índice de contenidos
Beneficios
- Acelera la entrega de contenido al usuario final. Se reduce la latencia, ya que la memoria de acceso es mucho más rápida. Por ejemplo, al usar una Red de distribución de contenidos (CDN), se recurre a memorias más cercanas al cliente final, mediante algoritmos se conoce en qué servidor de caché deben almacenarse qué datos.
- Reduce la carga del servidor y con ello costes y mejora la escalabilidad.
- Mejora la UX. Gracias a la rapidez y reducción de la latencia, el usuario final se ve beneficiado por poder experimentar una interacción sin tiempos de espera.
Escenarios de uso
Como principales datos que vamos a querer almacenar en caché en nuestras aplicaciones y sitios web tenemos los datos estáticos y los dinámicos de uso recurrente.
- Estáticos. Hojas de estilos, imágenes, archivos de JS, por lo general, no van a cambiar en producción. Así que estos pueden ser almacenados en caché y quedar ahí hasta que por algún motivo el desarrollador realice un cambio en estos. Este almacenamiento de caché se realiza por lo general en el cliente.
- Dinámicos de uso recurrente. Aquí no podemos almacenarlos de manera indefinida, pero podemos tenerlos más accesibles, estos podrían ser datos como información del usuario o resultados de búsqueda.
Tipos de caché
- Caché del navegador: Almacenamiento de la copia de recursos estáticos, hojas de estilos, scripts o imágenes, en el navegador del usuario. Cuando el usuario visita la web nuevamente, el navegador carga los recursos almacenados de manera local, reduciendo así peticiones al servidor.
- Proxy local. Si trabajas en una red local, es posible que el administrador haya instalado esta capa extra de caché.
- Opcode caching: Es una técnica que almacena el PHP precompilado en memoria. Cada vez que visitamos un sitio web OPcode consulta si el PHP está en caché y si está lo coge de esa memoria reduciendo el tiempo de respuesta del servidor.
- Object caching: Para almacenar consultas de la base de datos, así se ahorra tener que consultarla repetidamente. Este tipo de caché puede venirnos bien en CMSs como en WordPress, donde las consultas a la base de datos se realizan frecuentemente.
Mejora tu rendimiento del caché en el back end
Dos de las más populares opciones de almacenamiento de caché en memoria son Memcache y Redis, ambas de código abierto, potentes funciones de almacenamiento de caché y arquitectura distribuida, permitiendo gran escalabilidad y una mayor tolerancia a fallos.
El almacenamiento en disco es otra opción popular, esto es útil cuando los datos a almacenar son de uso menos frecuente y de mayor tamaño.
Conviene hacer un control del rendimiento de caché, para ello se pueden utilizar herramientas como Google Analytics o New Relic, así podremos analizar los hits y los miss en el caché (cuando los datos están en caché y cuando no).
Mejores prácticas para almacenamiento de caché
Al implementar caché en tu servidor hay ciertas prácticas que se deben tener en cuenta.
- Gestiona cuánto tiempo está el contenido en el caché. Incrementar el tiempo que la memoria caché permanecerá sin borrarse, hará tu contenido mucho más estático, en cambio, si quieres que este sea dinámico y tienes pensado que cambie, considera esto y disminuye el tiempo en el que los datos permanecerán en memoria.
- Políticas de expiración de caché. La combinación de conceptos que definen cuándo expira una entrada de caché. Podría definirse dicha política con estos.
- Invalidación del caché. Es decir, deshacerte de los datos obsoletos de manera que esté almacenada información relevante y/o actualizada. Si por ejemplo se actualizan los datos de un usuario, los datos previos en caché deberían ser invalidados.
- Prueba y supervisa tu caché. Para identificar problemas deberás probar tu caché y ver cómo se comporta en diferentes situaciones.
Seguridad y caché
Una de las mayores preocupaciones que puede venir de exponer nuestros datos sensibles en caché es que estos sean robados. De hecho, cualquier cosa almacenada en el caché de nuestro ordenador es accesible para cualquier que tenga acceso físico o virtual a nuestro dispositivo.
El acceso a datos almacenados en caché puede revelar información sensible, como historiales de URL, encabezados HTTP, entradas de formularios HTML, cookies e historial de transacciones, de donde se puede obtener información acerca de nosotros que no quisiéramos que fuera revelada.
Podemos prevenir estos robos cifrando los datos sensibles, configurando políticas de caché que excluyan información confidencial, y el uso de técnicas de invalidación y expiración de caché para garantizar que los datos no se almacenen por más tiempo del necesario.
¿Qué es borrar la memoria cache?
Como usuarios nosotros tenemos acceso al caché del navegador o de aplicaciones, de manera que podemos borrarlo, al eliminar este caché, estaremos eliminando los datos estáticos almacenados en nuestro navegador.
Así que si borramos la memoria cache, estaremos eliminando de esa memoria toda la información a la que teníamos acceso sin acceder a la memoria de origen. Una vez borrados la primera vez que tratemos de acceder a estos datos de nuevo le costará algo más, pero tendremos acceso a los datos actualizados del origen, pudiendo cargar la última versión del contenido disponible.
Hasta la próxima
El almacenamiento en caché es una técnica esencial en el desarrollo web, que optimiza la velocidad y eficiencia del acceso a la información. Al almacenar datos frecuentes en una memoria de fácil acceso, no solo se mejoran los tiempos de carga, la experiencia del usuario, sino que también se reduce la carga en los servidores, incrementando la escalabilidad y reduciendo costos.
Por si fuera poco, todo esto repercute directamente en la puntuación que los buscadores nos van a dar, mejorando así también el SEO.