Es mucho más rápido y más rápido. Si no, pueden ir a la sucursal principal o la sucursal principal y luego también pedir a la sucursal que tenga esas cosas en las sucursales más pequeñas o más caras para que puedan obtenerlo de allí. Así es como funciona el almacenamiento en caché de las CDNs. Básicamente, replica el contenido estático en servidores proxy en el borde de la red. Entonces, cuando un usuario solicita contenido de un sitio web utilizando una CDN, la CDN obtiene el contenido del servidor de origen o el servidor principal y luego guarda una copia del contenido para futuras solicitudes. El contenido en caché permanece en la caché de la CDN siempre que los usuarios sigan solicitándolo.
Bueno, ¿qué pasa con las consultas de GraphQL? ¿Hacia dónde vamos con esto? Bueno, las CDNs saben cómo almacenar en caché los recursos cuando realmente tienen esos encabezados de solicitud de los que hablamos adjuntos a ellos. Pero, ¿podemos usar esos encabezados de solicitud con las consultas de GraphQL? Sí, podemos. Podemos establecer encabezados de control de caché en una consulta de GraphQL, ¿verdad? Bueno, excepto que generalmente usamos recursos que son documentos de consulta. Bueno, sigue siendo un recurso. Entonces podemos establecer encabezados. En el ejemplo que ves aquí, un documento es nuestro recurso aquí y sin duda podríamos adjuntar el control de caché, la última modificación y algunos encabezados de e-texto a él. Pero aunque eso es posible en teoría ya que GraphQL usa POST, pero en la práctica básicamente no podemos adjuntar esos encabezados a POST y debemos usar GET. Entonces es por eso que recurrimos a las consultas persistentes como solución número uno para evitar adjuntar esos encabezados de los que hablamos a las consultas de GraphQL.
Un principio central en REST del que hablamos es que usas una URL para identificar una pieza de data, una pieza de recurso, y luego usamos el verbo GET en nuestra solicitud HTTP para indicar que estás leyendo algunos data, no escribiendo. Eso le dice a nuestras CDNs que está bien almacenar ese resultado ya que no espera modificar algo en el backend. En contraste con eso, históricamente, la mayoría de las herramientas gráficas enviaban solicitudes HTTP utilizando POST. En lugar de una URL, usaban un cuerpo de solicitud complicado que contiene una consulta y variables. Como complicación adicional, en algunos navegadores, hay un límite relativamente pequeño de tamaño de URL. Eso significa que puedes ajustar toda la consulta que estás haciendo y también los valores en las solicitudes GET. Entonces, ¿qué podemos hacer? Bueno, las consultas persistentes vienen a nuestro rescate. Al combinar ApolloLink, nuestra interfaz de red modular para el cliente, y la función de consultas persistentes automáticas de Apollo Engine, podemos abordar ambas preocupaciones a la vez. Después de configurar el motor, puedes agregar fácilmente ApolloLink persistent queries a tu código de cliente. Aquí tienes un ejemplo de código que utiliza un enlace de consulta persistente. Esto hará dos cosas por nosotros. Primero, enviar consultas a través de HTTP GET en lugar de POST, ¿verdad, porque las CDNs necesitan esa solicitud GET para entender que los recursos no están cambiando, mientras seguimos usando POST para las mutaciones. Y segundo, usar un ID de consulta persistente abreviado en la URL GET para que la clave de caché para las CDNs sea más corta y no alcancemos los límites de tamaño de URL. Esto acerca a GraphQL mucho más a las solicitudes regulares de HTTP GET para las que las CDNs están diseñadas para manejar.
Bueno, ¿qué más podemos hacer además de las consultas persistentes? Hablemos sobre el control de caché de encuesta. ¿Qué es eso? Con nuestra API REST, simplemente podemos devolver un encabezado de control de caché desde un punto final específico.
Comments