performance - await - async php
solicitudes http de lotes (6)
¿Alguien sabe una forma estándar de lotes de solicitudes http? ¿Significado - enviar múltiples solicitudes atómicas http en un viaje redondo?
Necesitamos dicho mecanismo en nuestra implementación de la API REST por razones de rendimiento. Este tipo de mecanismo puede reducir drásticamente la cantidad de viajes de ida y vuelta que el cliente debe realizar para consumir la API.
Gracias por adelantado,
Shay
Defina un nuevo recurso que contenga los datos que el cliente desea. Consulte http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-743
Eso es un problema con REST. Están a nivel de entidad. La idea de REST es que cada URL identifique de forma única un recurso. Por supuesto que puede introducir recursos agregados. Por ejemplo, www.yoursite.com/customerA?include=Orders,Faults,Incidents Esto devuelve el XML para CustomerA pero también devuelve los pedidos, fallas, incidentes del cliente como colección incrustada.
Hay una forma HTTP oficial de hacer eso que se llama HTTP Pipelining . Pero es posible que tenga más problemas con el lado del navegador que con el lado del servidor. Por lo tanto, puede utilizarlo si tiene un alto nivel de control solo en el lado del cliente.
XHR no siempre permite la canalización, y AFAIK no tiene control de la tunelización HTTP con Javascript. Por lo tanto, no puede existir una implementación básica de ajax-jQuery. Pero puede encontrar algunas cosas avanzadas con Comet y el protocolo de Bayeux, emulando conexiones de TCP a largo plazo bidireccionales, donde seguramente reducirá los viajes de ida y vuelta de TCP.
No soy un especialista en cometas, pero puede encontrar información útil sobre este artículo de Comet & HTTP Pipeling. Según tengo entendido, la mayor parte de esto es altamente experimental, pero al menos podría tener una buena alternativa con el cometa "clásico" cuando HTTP Pipelining es no disponible. Esto podría necesitar una nueva etiqueta o una nueva pregunta.
Si el uso de recursos ''agregados'' dedicados como fumanchu dijo anteriormente no funciona para usted, también puede probar si puede mover las representaciones de recursos menos volátiles a caches para reducir la carga en su sistema. Por ejemplo: las páginas HTML en la Web ''humana'' a menudo incluyen cargas y cargas de imágenes y las muchas solicitudes secundarias no son motivo de preocupación.
Si está buscando servicios basados en REST o una API de algún tipo. Hay algunos inicios de un estándar aquí http://www.odata.org/documentation/odata-version-3-0/batch-processing/
Y una implementación de Google aquí https://cloud.google.com/storage/docs/json_api/v1/how-tos/batch
Usted crea solicitudes por lotes llamando a new_batch_http_request () en su objeto de servicio, que devuelve un objeto BatchHttpRequest, y luego llama a add () para cada solicitud que desea ejecutar. Puede pasar una devolución de llamada con cada solicitud que se llame con la respuesta a esa solicitud. Los argumentos de la función de devolución de llamada son un identificador de solicitud único para cada llamada a la API, un objeto de respuesta que contiene la respuesta de la llamada a la API y un objeto de excepción que puede configurarse como una excepción generada por la llamada a la API. Una vez que haya agregado las solicitudes, llame a execute () para realizar las solicitudes. La función execute () bloquea hasta que se hayan llamado todas las devoluciones de llamada.
Referencias:
También puedes probar esto https://developers.google.com/api-client
biblioteca / python / guía / lote
https://cloud.google.com/storage/docs/json_api/v1/how-tos/batch