Si compró leche en la tienda, puede comprender cómo funciona el almacenamiento en caché en el lado del servidor y en el lado del navegador.Si es un usuario activo de Internet (y este es probablemente el caso), utiliza constantemente el almacenamiento en caché, pero es posible que no conozca el "detrás de escena": cuándo y cómo funciona.
Desde el punto de vista del desarrollador, el almacenamiento en caché facilita la creación de aplicaciones web y servidores web de alto rendimiento: no necesita optimizar constantemente los servidores sobrecargados con miles de solicitudes: simplemente implementa protocolos de almacenamiento en caché y la vida se vuelve mucho más fácil.
Al almacenar en caché, el tiempo de carga de la página disminuye de 2 segundos a 1 segundo ... lo cual no es muy impresionante, ¿verdad? Pero no puede prescindir de él cuando tiene que procesar solicitudes de una gran cantidad de usuarios.
Utilizando el almacenamiento en caché en una de mis aplicaciones web, me di cuenta de que solo leer los términos no es la mejor manera de explicar este enfoque. Se me ocurrió que una buena analogía sería el camino de la leche desde la granja hasta el refrigerador.
Para comprender mi explicación, necesita saber un poco sobre los
conceptos básicos de cómo funcionan los servidores web . ¡Empecemos!
Traducido a Alconost¿Cómo sería Internet sin el almacenamiento en caché?
Antes de pasar al almacenamiento en caché, pensemos en cómo se habría visto Internet sin él. Imagine por un momento que vive en los siglos XVIII y XIX. en el campo Tienes una granja pero no tienes refrigerador. Mantiene varias vacas, pero su leche se echa a perder rápidamente y, por lo tanto, es muy difícil obtener el beneficio.
Por cierto, en algunos lugares la gente todavía no tiene refrigeradores: beben leche fresca de inmediato o la
mezclan con granos y la dejan fermentar , un enfoque interesante, ¿verdad?
En general, le gustaría vender leche a otros aldeanos. Pero tendrán que beberlo muy rápido. Supongamos que una vaca puede producir diez litros de leche por día. Esto significa que si demasiadas personas vienen repentinamente a la granja por leche, tendrá que pedirles que regresen al día siguiente.

Y este no es el caso cuando puedes conseguir un par de vacas más y expandirte, porque tienes una base de clientes limitada: solo los residentes de una aldea compran leche. Por lo tanto, hay límites bastante ciertos.

Sin almacenamiento en caché, el poder de procesamiento de los servidores lo limita. El almacenamiento en caché se utiliza para cargar recursos estáticos como:
- imágenes
- CSS
- archivos html estáticos
- Archivos JavaScript
Por defecto, para cada solicitud entrante, el servidor debe enviar una nueva respuesta. Pero una solicitud de carga de página en realidad puede significar cuatro solicitudes separadas, una para cada una de las categorías anteriores. Teniendo en cuenta que los archivos de imagen suelen ser bastante voluminosos, una gran cantidad de usuarios de todo el mundo sobrecargarán fácilmente sus servidores y las páginas tardarán más en cargarse.

Idealmente, me gustaría reducir la carga en los servidores, preservando de alguna manera las respuestas a las solicitudes comunes. El servidor no tiene que procesar cada nueva solicitud por separado; la respuesta se recibirá de la memoria caché. Por supuesto, siempre puede desembolsar y agregar más servidores, pero esto puede conducir a aumentos de costos incontrolados.
Caché del lado del servidor
De vuelta a nuestras vacas. ¿Sabes qué facilitaría el trabajo de nuestra granja lechera?
¡Compra con una nevera!
Los residentes ya no necesitarán ir a la granja e inmediatamente tomar leche, ya que se puede almacenar de forma segura durante varias semanas.
La tienda elimina la carga de la granja: ahora las vacas no necesitan ser molestadas por cada comprador. La tienda se ocupa de la demanda, y solo tiene que ordeñar a sus vacas diariamente. Y una ventaja más: ahora los residentes de las aldeas vecinas podrán comprar leche almacenada en el refrigerador.

El caché del lado del servidor , como una tienda, manejará las solicitudes populares y entregará contenido mucho más rápido y de manera más confiable.
La imagen de arriba muestra un
servidor proxy de almacenamiento en
caché : almacena archivos estáticos que se utilizan para responder a solicitudes comunes. Este servidor intercepta tales solicitudes y responde rápidamente, lo que le permite eliminar la carga correspondiente de los servidores web principales.
En este punto, es posible que ya tenga preguntas:
- ¿Cómo definir una consulta "popular"?
- ¿Cuánto tiempo se almacenan las respuestas en la caché de proxy?
Para explicar esto, necesitará una guía más detallada para configurar el almacenamiento en caché, pero ahora es importante que conozcamos un concepto importante: la
frescura . Habrá diferentes archivos en el proxy de almacenamiento en caché, almacenados en caché en diferentes momentos, y debe decidir si aún emitirá estos archivos. Esto dependerá de la
política de caché .
Lo que también se asemeja a almacenar leche en una tienda. El director de la tienda debe decidir cuánto tiempo permanecerá la leche antes de ser descartada. Los servidores proxy de almacenamiento en caché miden su rendimiento por el
porcentaje de aciertos de caché , el porcentaje de contenido que se puede entregar a través del servidor de almacenamiento en caché.
Red de entrega de contenido
Entonces, tenemos una tienda de abarrotes que vende su leche. Ya no está mal, pero los residentes pueden comprar leche solo en una tienda local, y es poco probable que alguien venga de lejos. Para expandir la producción, necesita vender leche en más tiendas.
Entonces, comienzas a entregar leche a otras tiendas y así satisfacer la demanda en una región geográfica mucho más amplia. Esto es similar a una red de entrega de contenido (CDN): servidores proxy ubicados en todo el mundo (como los que se mencionaron anteriormente).
Como usuario final, puede pensar que Internet de alta velocidad le permite cargar la mayoría de los sitios muy rápidamente. Sin embargo, esto es principalmente posible gracias al uso de CDN para la entrega rápida de archivos estáticos.
Si se encuentra en Inglaterra y está intentando descargar un archivo almacenado en caché en un servidor en Khabarovsk, la respuesta llegará con cierto retraso: la señal tardará en recorrer miles de kilómetros de cables. Por lo tanto, un servidor proxy de almacenamiento en caché local en el Reino Unido le permitirá cargar el sitio más rápido.


Por lo tanto, sus servidores pueden enviar una copia de los recursos estáticos a cada servidor proxy en el CDN para que procesen las solicitudes locales hasta que los recursos ya no estén "frescos". Los proveedores de servicios CDN populares son Rackspace, Akamai y Amazon Web Services.
Caché lateral del navegador
Entonces, ahora las personas de todo el país (e incluso del mundo) pueden llevar a casa la leche fría producida en su granja. Hubo un problema: no pueden almacenar la leche en casa, por lo que después de comprar hay que beberla rápidamente y volver a la tienda por una nueva porción. Resulta que dicho sistema todavía no es muy conveniente para los compradores.
¡El refrigerador nos salvará!
Con un refrigerador, puede almacenar leche en casa y no correr siempre a la tienda. En términos de almacenamiento en caché, este es un lugar completamente diferente para almacenar recursos estáticos, ya que se encuentra en el lado del cliente (en otras palabras, en la computadora donde se está ejecutando el navegador), y nuestro servidor proxy estaba en un lugar remoto.
Este enfoque no solo es conveniente para el usuario en el caso de sitios visitados con frecuencia, como Facebook o Amazon, sino que también permite que estos sitios ahorren en costos de servidor debido a la menor cantidad de solicitudes procesadas.


¡Y aquí es importante tener en cuenta que la leche en el refrigerador NO APARECE! De todos modos, debe realizar la solicitud inicial, que llegará al servidor o al servidor proxy, y solo después de eso puede almacenar en caché algunos archivos localmente.
¿Cómo sabe el navegador cuándo solicitar nuevos archivos del servidor? Después de todo, debe actualizar de alguna manera los archivos locales.
Así como los productores de leche ponen fechas de vencimiento en el empaque, los servidores agregan un identificador específico al encabezado de respuesta HTTP. En realidad, hay
cuatro sistemas diferentes para el almacenamiento en caché HTTP. El escenario descrito anteriormente es muy similar al método de vencimiento. Sin embargo, en el caso de algunos otros métodos, es necesario enviar una solicitud al servidor antes de emitir el archivo en caché.

Cuándo comenzar a usar el almacenamiento en caché
Supongamos que está creando su primera aplicación web. Mientras no tenga miles de usuarios, probablemente no tenga que preocuparse por los protocolos de almacenamiento en caché: el costo de ejecutar un servidor será lo suficientemente bajo sin él. Sin embargo, con el crecimiento de la base de usuarios, también será necesario implementar el almacenamiento en caché, si desea que la aplicación se cargue rápidamente.
Tome Heroku, por ejemplo, una gran herramienta para implementar su primera aplicación web. Sin embargo,
para implementar el almacenamiento en caché, tendrá que usar un servicio separado , por ejemplo, CloudFront de Amazon o CloudFlare, y tomará más tiempo aprender esto.
Puede notar el almacenamiento en caché en el lado del navegador cuando intenta volver a cargar la página y obtener nuevos recursos estáticos, pero la página no cambia, sin importar cuántas veces la actualice.
Por lo general, la razón de esto es el protocolo de almacenamiento en caché del lado del navegador. Para omitir el caché del navegador y solicitar nuevos recursos del servidor, puede presionar
Cmd + Shift + R (si tiene una Mac) o
Ctrl + Shift + R (en una PC).
Sobre el traductorEl artículo fue traducido por Alconost.
Alconost
localiza juegos ,
aplicaciones y sitios en 68 idiomas. Traductores en lengua nativa, pruebas lingüísticas, plataforma en la nube con API, localización continua, gestores de proyectos 24/7, cualquier formato de recursos de cadena.
También hacemos
videos de publicidad y capacitación , para sitios que venden, imágenes, publicidad, capacitación, teasers, expliner, trailers de Google Play y App Store.
Más detalles