Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo ejecutar Nginx en un contenedor de muelle en Ubuntu 14.04

marzo 4, 2020

 

Introducción

contenido inteligente de almacenamiento en caché es una de las maneras más eficaces para mejorar la experiencia de los visitantes de su sitio. El almacenamiento en caché, o almacenar temporalmente el contenido de las solicitudes anteriores, es parte de la estrategia de entrega de contenido básico implementado dentro del protocolo HTTP. Componentes a lo largo de la ruta de entrega pueden todos los elementos de la caché para acelerar las solicitudes posteriores, sujeto a las políticas de almacenamiento en caché declarados por el contenido.

En esta guía, vamos a discutir algunos de los conceptos básicos de almacenamiento en caché de contenido web. Esto cubrirá principalmente cómo seleccionar las políticas de almacenamiento en caché para asegurar que las memorias caché a través de Internet puede procesar correctamente su contenido. Vamos a hablar de los beneficios que ofrece el almacenamiento en caché, los efectos secundarios a tener en cuenta, y las diferentes estrategias que emplean para proporcionar la mejor combinación de rendimiento y flexibilidad.

¿Qué es el almacenamiento en caché?

almacenamiento en caché es el término para almacenar las respuestas reutilizables con el fin de hacer más rápido las solicitudes posteriores. Hay muchos tipos diferentes de almacenamiento en caché disponibles, cada uno de los cuales tiene sus propias características. cachés de aplicaciones y cachés de memoria son populares por su capacidad para acelerar ciertas respuestas. almacenamiento en caché

web, el foco de esta guía, es un tipo diferente de caché. almacenamiento en caché web es una característica de diseño de la base del protocolo HTTP intención de minimizar el tráfico de red al tiempo que mejora la capacidad de respuesta percibida del sistema en su conjunto. Cachés se encuentran en todos los niveles del viaje de un contenido desde el servidor original al navegador.

Web caching obras de almacenamiento en caché de las respuestas HTTP para las solicitudes de acuerdo con ciertas reglas. solicitudes posteriores de contenido almacenado en caché a continuación, se pueden cumplir de una caché más cerca del usuario en lugar de enviar la solicitud, toda la parte posterior paso al servidor web.

Beneficios ayudas de almacenamiento en caché

eficaces tanto los consumidores de contenido y proveedores de contenido. Algunos de los beneficios que aporta a la caché de entrega de contenido son:

  • Disminución de los costes de red: El contenido puede ser almacenado en caché en varios puntos de la ruta de red entre el consumidor contenido y origen de contenido. Cuando el contenido se almacena en caché más cerca del consumidor, las solicitudes no causarán mucha actividad de red adicional más allá de la memoria caché.
  • Mejora de la capacidad de respuesta: El almacenamiento en caché permite que el contenido va a recuperar más rápido debido a toda una red de ida y vuelta no es necesario. Cachés mantienen cerca del usuario, como la memoria caché del navegador, puede hacer que esta recuperación casi instantánea.
  • un mayor rendimiento en el mismo hardware: Para que el servidor donde se originó el contenido, más rendimiento puede ser exprimido desde el mismo hardware, permitiendo el almacenamiento en caché agresivo. El propietario del contenido puede aprovechar los potentes servidores a lo largo de la ruta de entrega para tomar el peso de ciertas cargas de contenido.
  • disponibilidad de contenido durante las interrupciones de red: Con ciertas políticas, el almacenamiento en caché puede ser utilizado para servir contenido a los usuarios finales, incluso cuando no esté disponible por períodos cortos de tiempo desde los servidores de origen.

Terminología

Cuando se trata de almacenamiento en caché, hay algunos términos que son propensos a venir a través de que podrían no estar familiarizados. Algunos de los más comunes son a continuación: Servidor

  • Origen: El servidor de origen es la ubicación original del contenido. Si usted está actuando como el administrador del servidor web, esta es la máquina que usted controla. Es responsable de servir a cualquier contenido que no se pudo recuperar de una memoria caché a lo largo de la ruta pedido y para establecer la directiva de almacenamiento en caché de todos los contenidos.
  • aciertos de caché: La eficacia de un caché se mide en términos de su relación de aciertos de caché o tasa de éxito. Esta es una relación de las solicitudes capaces de ser recuperada desde una memoria caché con el total de peticiones realizadas. Una alta proporción de aciertos de caché medios que un alto porcentaje de contenido que pudo ser recuperada de la caché. Este suele ser el resultado deseado para la mayoría de los administradores.
  • Frescura: La frescura es un término usado para describir si un elemento dentro de una caché sigue siendo considerado un candidato para servir a un cliente. Contenido en una memoria caché sólo será utilizada para responder si está dentro del marco de tiempo especificado por la frescura de la política de almacenamiento en caché. contenido
  • viciado: elementos de la caché caducan según la configuración de caché de frescura en la política de caché. contenido caducado es “vieja”. En general, el contenido caducado no se puede utilizar para responder a las peticiones de los clientes. El servidor de origen debe ser re-contactado para recuperar el nuevo contenido o por lo menos verificar que el contenido almacenado en caché sigue siendo exacta.
  • Validación: artículos obsoletos en la memoria caché puede ser validada con el fin de refrescar su fecha de caducidad. La validación consiste en comprobar en el servidor de origen para ver si el contenido almacenado en caché aún representa la versión más reciente del artículo.
  • invalidación: La invalidación es el proceso de eliminar el contenido de la caché antes de su fecha de caducidad especificada. Esto es necesario si el artículo ha sido cambiado en el servidor de origen y que tiene un elemento obsoleto en caché podría causar problemas significativos para el cliente.

Hay un montón de otros términos de almacenamiento en caché, pero los de arriba debería ayudarle a empezar.

Lo que puede almacenar en caché?

Cierto contenido se presta más fácilmente a la memoria caché que otros. Algunos contenidos muy caché de usar para la mayoría de los sitios son:

  • Logotipos y marcas imágenes
  • antigiro imágenes en general (iconos de navegación, por ejemplo) hojas
  • estilo
  • general los archivos JavaScript
  • Contenido descargable
  • archivos multimedia

Estos tienden a cambiar con poca frecuencia, para que puedan beneficiarse de ser almacenado en caché por períodos más largos de tiempo.

Algunos elementos que hay que tener cuidado en el almacenamiento en caché son: páginas

  • HTML imágenes
  • giratorios
  • frecuentes modificado Javascript y CSS
  • contenido solicitado con las cookies de autenticación

Algunos elementos que deben casi nunca se almacenan en caché son:

  • Activos relacionados con los datos sensibles (información bancaria, etc.)
  • contenido que es específico del usuario y cambiar con frecuencia

Además de lo anterior reglas generales, es posible especificar políticas que le permiten almacenar en caché los diferentes tipos de contenido apropiadamente. Por ejemplo, si los usuarios autenticados todos ven la misma vista de su sitio, puede ser posible almacenar en caché que vista en cualquier lugar. Si los usuarios autenticados ver una vista sensible al usuario del sitio que será válido durante algún tiempo, puede indicarle al navegador del usuario a la memoria caché, pero decirle a la caché de cualquier intermediario no almacenar la vista.

lugares en los que se almacena en caché de contenido web

contenido puede almacenar en caché en muchos puntos diferentes a lo largo de la cadena de suministro:

  • caché del navegador Web: propios navegadores mantienen una pequeña caché. Por lo general, el navegador establece una política que dicta los elementos más importantes en la caché. Esto puede ser contenido o contenidos específicos de usuario consideradas costosas de descarga y es probable que se solicitarán de nuevo.
  • Intermediario almacenamiento en caché de proxy: Cualquier servidor de entre el cliente y su infraestructura puede almacenar en caché determinado contenido según se desee. Estos cachés pueden ser mantenidos por los ISP u otras partes independientes.
  • caché inversa: Su infraestructura de servidor puede implementar su propia caché para los servicios de back-end. De esta manera, el contenido puede ser servido desde el punto de contacto en lugar de golpear los servidores back-end en cada petición.

Cada uno de estos lugares puede ya menudo lo hacen elementos de caché de acuerdo con sus propias políticas de almacenamiento en caché y las políticas establecidas en el origen de contenido. política

almacenamiento en caché encabezados

almacenamiento en caché depende de dos factores diferentes. La propia entidad almacenamiento en caché puede decidir si desea o no almacenar en caché el contenido aceptable. Puede decidir caché menos de lo que se permite que la memoria caché, pero nunca más.

La mayoría de almacenamiento en caché de comportamiento está determinado por la política de almacenamiento en caché, que es fijado por el propietario del contenido. Estas políticas se articulan principalmente a través del uso de las cabeceras HTTP específicas.

A través de varias iteraciones del protocolo HTTP, un par de diferentes cabeceras centrado cache-haber surgido con diferentes niveles de sofisticación. Los que probablemente todavía necesita prestar atención a continuación son:

  • Expira: El encabezado Caduca es muy sencillo, aunque bastante limitado en su alcance. Básicamente, se establece un tiempo en el futuro cuando el contenido caducará. En este punto, todas las solicitudes para el mismo contenido tendrán que volver al servidor de origen. Esta cabecera es probablemente el más utilizado sólo como una parte posterior caída.
  • Cache-Control: Este es el reemplazo más moderno para la cabecera Expira. Es bien apoyado y aperos de un diseño mucho más flexible. En casi todos los casos, esto es preferible a Expira, pero puede que no pierde nada con establezca ambos valores. Vamos a discutir los detalles de las opciones que se pueden ajustar Cache-control un poco más tarde.
  • Etag: La cabecera ETag se utiliza con la validación de la memoria caché. El origen puede proporcionar una Etag único para un artículo cuando inicialmente se sirve el contenido. Cuando un caché necesita para validar el contenido que tiene en la mano a su vencimiento, se puede enviar de vuelta la ETag que tiene para el contenido. El origen o bien contar la caché que el contenido es el mismo, o enviar el contenido actualizado (con el nuevo Etag).
  • última modificación: Esta cabecera especifica la última vez que el artículo fue modificado. Esto puede ser usado como parte de la estrategia de validación para asegurar que el contenido fresco.
  • Content-Length: Si bien no participan específicamente en la memoria caché, la cabecera Content-Length es importante fijar la hora de definir las políticas de la memoria caché. Cierto tipo de software se negará a contenido de la caché si no sabe por adelantado el tamaño del contenido que tendrá que reservar espacio para.
  • Vary: Una caché normalmente utiliza el host solicitado y la ruta de acceso al recurso como la llave con la que almacenar el elemento de la caché. La cabecera Vary se puede utilizar para contar las memorias caché de prestar atención a un encabezado adicional al decidir si una solicitud es para el mismo artículo. Esto es más comúnmente utilizado para contar las memorias caché de clave por la cabecera Accept-Encoding así, por lo que la memoria caché sabrá diferenciar entre el contenido comprimido y sin comprimir.

Una digresión acerca de la cabecera Vary

La cabecera Vary le ofrece la posibilidad de almacenar diferentes versiones del mismo contenido a expensas de la dilución de las entradas en la memoria caché.

En el caso de Accept-Encoding, el establecimiento de la cabecera Vary permite una distinción crítica que tendrá lugar entre el contenido comprimido y sin comprimir. Esto es necesario para servir correctamente estos artículos a los navegadores que no pueden manejar el contenido comprimido y es necesaria a fin de proporcionar facilidad de uso básico. Una de las características que le dice que Accept-Encoding puede ser un candidato bueno para variar es que sólo tiene dos o tres valores posibles.

Artículos como fuerza User-Agent a primera vista parecen ser una buena manera de diferenciar entre los navegadores móviles y de escritorio para servir a diferentes versiones de su sitio. Sin embargo, dado que las cadenas User-Agent no son estándar, el resultado será probablemente muchas versiones del mismo contenido en cachés intermedias, con una muy baja relación de aciertos de caché. La cabecera Vary deben utilizarse con moderación, especialmente si no tiene la capacidad de normalizar las solicitudes en cachés intermedias que controlas (que puede ser posible, por ejemplo, si a aprovechar una red de entrega de contenido). Banderas

Cómo Cache-Control Impacto almacenamiento en caché

arriba, que se menciona cómo se utiliza el encabezado Cache-Control para la especificación política de caché moderna. Un número de diferentes instrucciones de política se puede establecer utilizando esta cabecera, con múltiples instrucciones separadas por comas.

Algunas de las opciones Cache-Control se pueden utilizar para dictar la política de almacenamiento en caché de su contenido son:

  • no-cache: esta instrucción se especifica que cualquier contenido almacenado en caché debe ser revalidado en cada solicitud antes de ser servido a un cliente. Esto, en efecto, las marcas de los contenidos como rancio de inmediato, pero le permite utilizar técnicas de revalidación para evitar descargar de todo el elemento de nuevo.
  • no-store: Esta instrucción indica que el contenido no puede ser almacenado en caché en modo alguno. Esto es apropiado para establecer si la respuesta representa los datos sensibles.
  • pública: esto marca el contenido como pública, lo que significa que puede ser almacenado en caché por el navegador y cualquier caché intermedios. Para las solicitudes que utilizó la autenticación HTTP, las respuestas están marcados privados por defecto. Esta cabecera anula dicha configuración.
  • privada: esto marca el contenido como privado. contenido privado puede ser almacenada por el navegador del usuario, pero no debe ser almacenado en caché por cualquiera de las partes intermedias. Esto a menudo se utiliza para los datos específicos de usuario.
  • max-age: Esta opción configura la edad máxima que el contenido puede tener una caché antes de que se debe revalidar o volver a descargar el contenido desde el servidor de origen. En esencia, esto reemplaza el encabezado Caduca para la navegación moderna y es la base para la determinación de una pieza de la frescura del contenido. Esta opción toma su valor en segundos con un tiempo de frescura validez máxima de un año (31536000 segundos).
  • s-maxage: Esto es muy similar a la configuración maxage, en el que se indica la cantidad de tiempo que el contenido puede ser almacenado en caché. La diferencia es que esta opción se aplica sólo a las cachés intermedias. Combinando esto con la anterior permite para la construcción política más flexible.
  • obligada revalidate: Esto indica que la información indicada por la frescura maxage, s-maxage o la cabecera Expira debe obedecer estrictamente. contenido obsoleto no se puede servir en ningún caso. Esto evita que almacenan en caché el contenido de ser utilizados en caso de interrupciones de red y escenarios similares.
  • proxy-revalidate: Esto funciona igual que el ajuste anterior, pero sólo se aplica a los servidores proxy intermedios. En este caso, el navegador del usuario potencialmente puede ser utilizado para servir contenido obsoleto en el caso de una interrupción de la red, pero cachés intermedias no se puede usar para este propósito.
  • sin transformar: Esta opción le dice a las cachés que no están autorizados a modificar el contenido recibido por razones de rendimiento en cualquier circunstancia. Esto significa, por ejemplo, que el caché no es capaz de enviar versiones comprimidas de contenido que no recibieron desde el servidor de origen comprimido y no está permitido.

Estos se pueden combinar de diferentes maneras de lograr diferentes comportamientos de almacenamiento en caché. Algunos valores mutuamente excluyentes son:

  • no-cache, no-store, y el comportamiento regular el almacenamiento en caché indicadas por ausencia de cualquiera pública
  • y

La opción no-store remplaza privados del no-cache si ambos están presentes. Para las respuestas a las solicitudes no autenticadas, se da a entender pública. Para las respuestas a las solicitudes autenticadas, se da a entender privado. Estos pueden ser anulados por incluyendo la opción opuesta en el encabezado Cache-Control.

El desarrollo de una estrategia de almacenamiento en caché

En un mundo perfecto, todo podría ser almacenado en caché de forma agresiva y sus servidores sólo se contactó para validar el contenido de vez en cuando. Esto no sucede con frecuencia en la práctica, sin embargo, lo que debe tratar de establecer algunas políticas cuerdo de almacenamiento en caché que tienen como objetivo la implementación de equilibrio entre el almacenamiento en caché a largo plazo y responder a las demandas de un sitio cambiante.

Problemas comunes

Hay muchas situaciones en las que el almacenamiento en caché no puede o no debe ser aplicado debido a cómo se produce el contenido (de forma dinámica generada por usuario) o la naturaleza del contenido (información bancaria sensibles, por ejemplo). Otro problema que muchos administradores se enfrentan a la hora de configurar el almacenamiento en caché es la situación en la que las versiones anteriores de su contenido son en la naturaleza, sin embargo, no rancio, a pesar de que las nuevas versiones han sido publicadas.

Estos son los dos problemas encontrados con frecuencia que pueden tener un serio impacto en el rendimiento de caché y la exactitud de los contenidos que se sirve. Sin embargo, podemos mitigar estos problemas mediante el desarrollo de políticas de almacenamiento en caché que se anticipen a estos problemas. Recomendaciones generales

Si bien su situación dictará la estrategia de almacenamiento en caché que utiliza, las siguientes recomendaciones pueden ayudar a guiarlo hacia algunas decisiones razonables.

Hay ciertos pasos que puede tomar para aumentar su tasa de aciertos de caché antes de preocuparse por las cabeceras específicas que utilice. Algunas ideas son:

  • Establecer directorios específicos para las imágenes, CSS y contenido compartido: Colocar contenido en directorios dedicados permitirá hacer referencia fácilmente a ellos desde cualquier página de su sitio.
  • Usar la misma URL para hacer referencia a los mismos elementos: Desde cachés fuera de tono tanto del huésped y la ruta de acceso al contenido solicitado, asegúrese de que usted refiere a su contenido de la misma manera en todas sus páginas. La recomendación anterior hace que este mucho más fácil.
  • Use sprites CSS imagen cuando sea posible: sprites imagen CSS para elementos, como iconos de navegación y disminuyen el número de idas y vueltas necesarias para hacer que su sitio y permitir que su sitio de caché que solo sprites durante mucho tiempo. guiones anfitrión
  • y recursos externos local cuando sea posible: Si usted utiliza los scripts de javascript y otros recursos externos, la posibilidad de organizar los recursos en sus propios servidores, si los encabezados correctos no se están proporcionando aguas arriba. Tenga en cuenta que tendrá que estar al tanto de las actualizaciones hechas al recurso aguas arriba de modo que usted puede actualizar su copia local. elementos de caché
  • de huellas dactilares: Para el contenido estático como archivos CSS y JavaScript, que pueden ser apropiadas para las huellas digitales de cada elemento. Esto significa agregar un identificador único para el nombre del archivo (a menudo un hash del archivo), de modo que si se modifica el recurso, el nuevo nombre de recurso puede ser solicitada, haciendo que las peticiones a derivación correctamente la caché. Hay una variedad de herramientas que pueden ayudar en la creación de las huellas dactilares y la modificación de las referencias a ellos dentro de los documentos HTML.

En cuanto a la selección de las cabeceras correctas para diferentes elementos, los siguientes pueden servir como una referencia general:

  • Permitir que la memoria caché para almacenar elementos genéricos: El contenido estático y el contenido que no es específica del usuario puede y debe ser almacenado en caché en todos los puntos de la cadena de entrega. Esto permitirá cachés intermedias para responder con el contenido para múltiples usuarios.
  • Permitir que los navegadores de los activos específicos del usuario caché: Para el contenido de cada usuario, a menudo es aceptable y útil para permitir el almacenamiento en caché en el navegador del usuario. Mientras que este contenido no sería apropiado caché en cualquier proxy de almacenamiento en caché de intermediación, el almacenamiento en caché en el navegador permite la recuperación instantánea para los usuarios durante las visitas posteriores.
  • excepciones hacen para el contenido esencial sensible al tiempo: Si tiene contenido que es sensible al tiempo, hacer una excepción a las reglas anteriores de modo que el contenido fuera de fecha no se sirve en situaciones críticas. Por ejemplo, si su sitio tiene un carrito de la compra, que debe reflejar los artículos en el carro inmediatamente. Dependiendo de la naturaleza del contenido, la no-cache o no-store opciones se pueden establecer en la cabecera Cache-Control para lograrlo.
  • Siempre proporcionar validadores: validadores permite contenido rancio que se actualice sin tener que descargar todo el recurso nuevo. Ajuste de la Etag y las cabeceras Last-Modified permiten cachés para validar su contenido y volver a servir si no se ha modificado en el origen, reduciendo aún más la carga.
  • Conjunto largos tiempos de frescura de los contenidos de apoyo: Con el fin de aprovechar el almacenamiento en caché de manera efectiva, los elementos que se solicitan como contenido de apoyo para cumplir con una solicitud a menudo debe tener un ajuste de la frescura de largo. Esto es generalmente apropiado para elementos como imágenes y CSS que se extraen para representar la página HTML solicitada por el usuario. Configuración del número de frescura extendidos, en combinación con las huellas digitales, permite a los cachés para almacenar estos recursos durante largos períodos de tiempo. Si los activos cambian, la huella digital modificado invalidará el elemento almacenado en caché y dará lugar a una descarga de los nuevos contenidos. Hasta entonces, los elementos de apoyo pueden almacenar en caché en el futuro.
  • Set cortos tiempos de frescura de los contenidos de los padres: Con el fin de hacer que el esquema anterior, el elemento que contiene deben tener tiempos relativamente cortos frescura o no ser en caché en absoluto. Esto es típicamente la página HTML que llama en la otra asistencia a contenido. El HTML en sí se descargará con frecuencia, lo que le permite responder a los cambios rápidamente. El contenido de soporte puede entonces ser almacenado en caché de forma agresiva.

La clave está en encontrar un equilibrio que favorece el almacenamiento en caché agresiva cuando sea posible, dejando oportunidades para las entradas de dejar sin efecto en el futuro cuando se realizan cambios. Su sitio tendrá probablemente una combinación de:

  • artículos agresivamente en caché elementos
  • en caché con un corto tiempo de frescura y la capacidad de re-validar artículos
  • que no deben ser almacenados en caché en absoluto

El objetivo es mover el contenido en las primeras categorías cuando sea posible mientras se mantiene un nivel aceptable de precisión.

Conclusión

Tomando el tiempo para asegurarse de que su sitio tiene políticas de almacenamiento en caché adecuados en su lugar puede tener un impacto significativo en su sitio. El almacenamiento en caché le permite reducir el ancho de banda de los costes asociados a servir el mismo contenido en varias ocasiones. El servidor también será capaz de manejar una cantidad mayor de tráfico con el mismo hardware. Quizás lo más importante, los clientes tendrán una experiencia más rápida en su sitio, lo que puede conducir a regresar con más frecuencia. Mientras que el almacenamiento en caché web eficaz no es una bala de plata, la creación de políticas de almacenamiento en caché apropiadas le puede dar ganancias medibles con el mínimo esfuerzo.