Catalizador :: Plugin :: caché :: http

HTTP / 1.1 validadores de caché para el catalizador
Descargar ahora

Catalizador :: Plugin :: caché :: http Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • Bernhard Graf
  • Sitio web del editor:
  • http://search.cpan.org/~graf/

Catalizador :: Plugin :: caché :: http Etiquetas


Catalizador :: Plugin :: caché :: http Descripción

Validadores de caché HTTP / 1.1 para el catalizador Desde que Mangind desarrolla sitios web, tiene que lidiar con los problemas que surgen cuando un sitio se vuelve popular. Esto es especialmente cierto para los contenidos dinámicos. Las optimizaciones de la aplicación web en sí se suelen seguir ajustando la configuración del sistema, un mejor hardware, la conectividad mejorada, el agrupamiento y el equilibrio de carga. Bueno, si el sitio produce suficiente beneficio para financiar todo esto (y las personas que se requieren). También hay numerosos módulos en el CPAN y consejos útiles en toda la World Wide Web sobre cómo descifrar el látigo en aplicaciones de catalizador. Sin editar a menudo. Se pasó por alto, que hace más de una década, los "padres" de la WWW han creado conceptos en http / 1.1 para reducir el tráfico entre el servidor web y el cliente web (y el proxy cuando corresponda). Todos los navegadores web comunes admiten estos conceptos durante muchos años. Estos conceptos pueden acelerar una aplicación web y guardar recursos al mismo tiempo. ¿Cómo es posible esto? Puede buscar el concepto en la Sección 13.3 RFC 2616, más la implementación en las Secciones 14.19, 14.24, 14.25, 14.28, 14.26 y 14.44. Para reducir una historia larga: este complemento no administra ningún caché en el servidor y evita transmitir datos cuando sea posible. Para utilizar este concepto en su aplicación basada en catalizador, se deben hacer algunas adiciones bastante pequeñas en el código: 1. Use el complemento Esto es fácil: en la clase de aplicación (a menudo referidos como myApp.pm), simplemente agregue caché :: HTTP a la lista de complementos después de usar Catalyst.2. Agregue los encabezados de respuesta apropiados que esos encabezados se modifiquen por última vez y Etag. El método de encabezado de catalizador :: Respuesta que en realidad nos proporciona una instancia de HTTP :: Los encabezados nos brindan dos accesorios útiles a esas líneas de encabezado: last_modificado y la ETAG. 2.1 $ c-> Respuesta-> Encabezados-> Last_Modified ($ UNIX_TIMESTAMP) Si esto existe en una respuesta para un recurso solicitado, entonces para la siguiente solicitud al mismo recurso, un moderno navegador web agregará una línea a los encabezados de solicitud para verificar Si los datos de recursos han cambiado desde la última fecha modificada, que se dio con la última respuesta. Si el servidor responde con un código de estado 304 y un cuerpo vacío, el navegador toma los datos de este recurso de su caché local. 2.2 $ C-> Respuesta-> Encabezados-> Etag ($ Entity_TAG) La etiqueta de entidad es una representación única de datos de un recurso. Por lo general, un resumen del organismo de respuesta sirve bien para este propósito, por lo que, por lo tanto, para ese caso, siempre que lea "Etag", puede reemplazarlo con "CheckSum". Si existe una ETAG en una respuesta para un recurso solicitado, entonces para la siguiente solicitud al mismo recurso, el navegador agregará una línea a los encabezados de solicitud con ese Etag, que le indica al servidor que solo transmite el cuerpo si la ETAG para el recurso ha cambiado. Si no tiene que responde el servidor con un código de estado 304 y un cuerpo vacío, y el navegador toma los datos de este recurso de su CACHE.SYNOPSISLOAD PLUGIO EN EL PAQUETE DE APLICACIÓN MYAPP; Utilice Catalyst QW (caché :: http); Cree un paquete de encabezado Última modificado MyApp :: Controller :: Foo; SUB BAR: LOCAL {MY ($ yo, $ c) = @_; MY $ DATA = $ C-> Modelo ('MyApp :: Modelo') -> Fetch_Data; My $ mtime = $ data-> mod_time; ... $ c-> respuesta-> encabezados-> last_modificado ($ mtime); ...} Creación automática del paquete Etag MyApp :: Ver :: TT; Use Base 'Catalyst :: Ver :: TT'; Usa MRO :: Compat; Use DIGEST :: MD5 'MD5_HEX'; Sub proceso {My $ Self = Shift; My $ C = $ _ ; $ Self-> Siguiente :: Método (@_) o devolver 0; MY $ MÉTODO = $ C-> Solicitud-> Método; Devuelve 1 si $ Método NE 'Obtener' y $ Método NE 'Head' o $ C-> STASH -> {Nocache}; # deshabilitar el almacenamiento en caché explícitamente mi cuerpo $ = $ c-> respuesta-> cuerpo; if ($ body) {utf8 :: codificar ($ cuerpo) si utf8 :: is_utf8 ($ cuerpo); $ c-> respuesta-> encabezados-> Etag (MD5_HEX ($ cuerpo)); } return 1; } Requisitos: · Perl


Catalizador :: Plugin :: caché :: http Software relacionado