ES2317348T3 - Prioridades de transferencia de objeto en una red de comunicaciones. - Google Patents

Prioridades de transferencia de objeto en una red de comunicaciones. Download PDF

Info

Publication number
ES2317348T3
ES2317348T3 ES06000930T ES06000930T ES2317348T3 ES 2317348 T3 ES2317348 T3 ES 2317348T3 ES 06000930 T ES06000930 T ES 06000930T ES 06000930 T ES06000930 T ES 06000930T ES 2317348 T3 ES2317348 T3 ES 2317348T3
Authority
ES
Spain
Prior art keywords
priority
component
objects
http
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES06000930T
Other languages
English (en)
Inventor
Daniel Schaffrath
Raphael Quinet
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of ES2317348T3 publication Critical patent/ES2317348T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams

Abstract

Un método de operar un servidor proxy, en el que se asigna o ajusta una prioridad de un objeto a enviarse a un cliente, cuando se encuentre una referencia a dicho objeto en un objeto previo que se va a despachar al cliente.

Description

Prioridades de transferencia de objeto en una red de comunicaciones.
Antecedentes del invento 1. Campo técnico de aplicación
El invento se refiere en general al campo de las redes de comunicaciones, y más particularmente a una transferencia de objeto desde un primer componente de red a través de un componente intermediario a un segundo componente de red, cuyo segundo componente de red está distante del primer componente de red.
2. Descripción de la técnica anterior
La transferencia de información sobre redes de comunicaciones con módem como la red pública de Internet o las redes internas se basa en unos protocolos específicos de transferencia. La World Wide Web (en adelante WWW) por ejemplo, que constituye un aspecto importante de la Internet, usa el protocolo de transferencia de hipertexto (en adelante HTTP) para intercambiar archivos que comprenden imágenes de texto, sonido, vídeo, y otros contenidos.
Cualquier servidor de WWW contiene, además de los archivos que puede servir, un componente de HTTP que se ha diseñado para esperar por solicitudes de HTTP y para gestionarlas cuando llegan. Un explorador de WWW se puede considerar como un cliente de HTTP que está configurado para enviar solicitudes de HTTP a servidores de WWW. Cuandoquiera que un usuario del explorador introduce una solicitud de archivo, bien sea "abriendo" un archivo de WWW (tecleando en un localizador uniforme de recursos (en adelante URL)) o bien haciendo "clic" sobre un vínculo de hipertexto, el explorador acumula una solicitud correspondiente de HTTP para el archivo y la envía a la dirección de destino. El componente de HTTP del servidor de destino recibe la solicitud de HTTP y devuelve el archivo solicitado.
El archivo solicitado se podría constituir mediante una página de lenguaje de marca de hipertexto (en adelante HTML) que incluya código de HTML. Cuando el explorador recibe la página de HTML del servidor y detecta que el código de HTML, que se puede considerar como un objeto en sí mismo, incluye objetos adicionales tales como imágenes (de fondo), sonidos, secuencias de comandos, o tramos de HTML, el explorador emite solicitudes adicionales de HTTP al servidor con el fin de buscar los objetos adicionales que estén incluidos en el código HTML. Tras recibir las solicitudes adicionales de HTTP, el servidor envía al explorador las respuestas de HTTP incluyendo los objetos solicitados como imágenes. Como resulta evidente en la Figura 1, las respuestas de HTTP se envían desde el servidor al explorador que funciona sobre el cliente en el mismo orden que el explorador ha emitido las solicitudes de HTTP.
El orden en que cualesquiera objetos adicionales incluidos en el código de HTML de la página de HTML son solicitados por el explorador depende usualmente de cómo se haya escrito la página de HTML. Por ejemplo, un objeto que se haya incluido en el principio del código de HTML no se presenta en forma visual necesariamente en la parte superior de la página de HTML porque características tales como tablas, estratos y tramos permiten al autor del HTML usar disposiciones generales complejas. Además, el orden en que un explorador emite solicitudes de HTTP depende también de algoritmos internos del explorador. Por ejemplo, algunos exploradores usan una heurística compleja para generar las solicitudes de HTTP comenzando por solicitar los cuatro primeros objetos tal como aparecen en el código de HTML de la página. Después que se han solicitado los cuatro primeros objetos, se solicitan cada dos objetos comenzando por la parte superior del área que está visible actualmente al usuario, luego cada cuatro objetos, y así sucesivamente. Otros exploradores usan un algoritmo más sencillo que solicita los objetos uno por uno según aparecen en el código de HTML. De lo anteriormente expuesto, resulta evidente que usualmente es difícil predecir el orden en que se generan solicitudes de HTTP para objetos a los que se haya hecho referencia en un código de HTML
Más aún, es difícil predecir el orden en que los objetos solicitados son recibidos por el explorador. Aunque la norma actual de HTTP (HTTP/1.1) requiere que en cada conexión de protocolo de control de transferencia (en adelante TCP) las respuestas de HTTP se envíen desde el servidor al explorador en el mismo orden que las solicitudes de HTTP son recibidas por el servidor, el orden en que las respuestas de HTTP son recibidas se vuelve imprevisible en cuanto se abre más de una conexión al servidor. Por tanto, la razón es el hecho de que, debido a condiciones variables de red y a diferentes tiempos de tratamiento de las solicitudes, algunas conexiones podrían transferir respuestas de HTTP más deprisa que otras.
El documento US 5987466 describe un método de explorar la WWW de la Internet y de presentar los elementos de una página web a un usuario. El explorador de web solicita un HTML deseado y luego solicita otros elementos de la página basándose en niveles de prioridad definidos por el usuario. Los elementos se presentan al usuario en secuencia de prioridad tan pronto como se reciben.
En el documento US-A-6 144 996 se describe un servidor proxy para acelerar la transferencia de objetos web mediante la entrega retardada de una página web si el contenido de la página no está localmente almacenada en su totalidad en el proxy.
Se necesita un método y un dispositivo que habilite una transferencia perfeccionada de objetos desde un primer componente de red a un segundo componente de red que está distante del primer componente de red.
Sumario del invento
Esta necesidad se satisface mediante la enseñanza de las reivindicaciones independientes. En las reivindicaciones subordinadas se describen realizaciones adicionales preferidas.
De acuerdo con un aspecto del invento, esta necesidad se satisface mediante un método de controlar, en una red de comunicaciones, una transferencia de objeto desde un primer componente por medio de un componente intermedio (de hardware o de software) a un segundo componente que está distante del primer componente, en el que la transferencia de objeto se basa en una pluralidad de solicitudes de objeto a los que se hace referencia en uno o más códigos que se van a procesar mediante el segundo u otro componente de la red de comunicaciones; el componente intermedio realiza las etapas de enviar una solicitud de objeto al primer componente, recibir del primer componente el objeto solicitado, al menos la de establecer y/o actualizar una prioridad del objeto solicitado, en el que se ha asignado una prioridad inicial al objeto solicitado basándose en un análisis de al menos uno de la solicitud de objeto y del código que se refiere al objeto solicitado, y, con independencia de la prioridad del objeto solicitado, retardar el objeto solicitado o enviar el objeto solicitado al segundo componente. Un objeto podría comprender en sí mismo partes de código referentes a uno o más objetos adicionales. Además, un código podría comprender por sí mismo un objeto (por ejemplo, solicitado previamente).
Mediante el retardo intencionado de la transferencia de un objeto basándose en una prioridad asignada, se mejora la transferencia global de objetos desde un punto de vista del usuario (incluso si no se ha disminuido la cantidad total de objetos a transferir), porque los objetos importantes se transfieren con carácter preferencial. Además, mediante la implementación de esquemas apropiados de asignación de prioridad se hace más previsible la transferencia de objetos desde el primer componente de red al segundo componente de red. Por ejemplo, a los objetos que tengan una significación mayor para el usuario se les puede asignar una prioridad más alta y de ese modo se podrían transmitir preferencialmente al segundo componente. Por el contrario, los objetos que tengan una significación menor se podrían retardar. En el caso extremo, un objeto que tuviese poca significación se podría retardar hasta un grado tal que no se transmitiese en absoluto al segundo componente. Esto permite controlar el orden en que los objetos son recibidos por el segundo componente.
La asignación de prioridades absolutas o relativas a los objetos (o a clases de objetos) se podría realizar de un modo dinámico. Una vez que se ha asignado inicialmente una prioridad, esta prioridad se puede establecer con respecto a valores absolutos específicos como umbrales o con respecto a prioridades de otros objetos. Basándose en el establecimiento, se puede decidir si se va a retardar o no un objeto. Antes del establecimiento, se podría evaluar de nuevo una prioridad asignada inicialmente a un objeto con el fin de determinar si la prioridad inicial tiene que actualizarse.
El componente intermedio se podría operar para reordenar objetos recibidos del primer componente. De ese modo, el retardo de los objetos se realiza preferiblemente de tal manera que el orden en que el componente intermedio recibe los objetos del primer componente difiera del orden en que los objetos se transmiten al segundo componente. La reordenación se podría basar en las prioridades de los objetos a transferir. Durante la reordenación, podría surgir la situación en la que, debido al retardo de algunos objetos, se acelerase realmente la transferencia de otros objetos.
La solicitud de objeto que se ha enviado al primer componente podría ser generada por el componente intermedio. Cuando el objeto solicitado es recibido por el componente intermedio, éste lo "impulsa" al segundo componente, sin haber recibido una solicitud explícita de objeto del segundo componente. Alternativamente, la solicitud de objeto podría ser generada por el segundo componente y enviarse al componente intermedio. Tras la recepción de la solicitud de objeto del segundo componente, se podría procesar por el componente intermedio y enviarse al primer componente.
Cuando el componente intermedio recibe del primer componente el objeto solicitado, el objeto recibido podría o bien retardarse o bien enviarse directamente al segundo componente. Existen diversas posibilidades en la forma en que se podría retardar el objeto solicitado que es recibido por el componente intermedio. El retardo del objeto solicitado puede incluir, por ejemplo, al menos una de las operaciones de dar instrucciones al segundo componente para que repita la solicitud de objeto, suspender una conexión al segundo componente de red por medio del cual se va a enviar el objeto solicitado, e informar al segundo componente de que el objeto solicitado se enviará automáticamente (por ejemplo, sin ninguna solicitud adicional de objeto del segundo componente) al segundo componente en un instante posterior.
Si el retardo del objeto solicitado incluye dar instrucciones al segundo componente de repetir la solicitud de objeto, el componente intermedio podría realizar las etapas de asignar un atributo específico al objeto a retardar, informar del atributo al segundo componente, recibir una referencia al atributo (por ejemplo, el propio atributo o una referencia no ambigua obtenida del atributo) del segundo componente y, después de recibir la referencia al atributo, enviar el objeto retardado al segundo componente o retardar más el objeto retardado. La decisión de si un objeto retardado tiene que enviarse al segundo componente o retardarse adicionalmente se podría basar en la prioridad relativa recientemente establecida del objeto solicitado repetidamente.
El atributo se puede considerar como un denominador común que permite que el componente intermedio y el segundo componente decidan sobre la transferencia del objeto al que se ha asignado el atributo. Usualmente, la forma del atributo depende de las características del protocolo de transferencia que se haya usado para la transferencia del objeto. Por ejemplo, en el caso del HTTP, el atributo podría estar constituido por un URL virtual creado por el componente intermedio. Debe hacerse notar que el plan de retardo basado en un atributo de dar instrucciones al segundo componente para repetir la solicitud de objeto se puede usar generalmente para retardar objetos, y no requiere necesariamente que se hayan asignado prioridades a los objetos a transferir.
En el esquema de retardo basado en la asignación de un atributo, el objeto se podría enviar desde el componente intermedio al segundo componente en respuesta a una solicitud de objeto recibida del segundo componente o de acuerdo con un plan de impulsión, es decir, independientemente de dicha solicitud de objeto desde el segundo componente. Si el esquema de retardo se basa en una solicitud de objeto recibida del segundo componente, el segundo componente podría ser informado sobre el atributo en contexto con una instrucción para repetir la solicitud de objeto. En tal caso, la referencia al atributo podría ser recibida por el componente intermedio en contexto con una solicitud repetida de objeto procedente del segundo componente.
Los objetos a transferir al segundo componente se pueden transmitir al segundo componente por medio de una sola conexión o mediante una pluralidad de conexiones entre el componente intermedio y el segundo componente. En el caso de las múltiples conexiones, las seleccionadas de las conexiones al segundo componente se podrían suspender, dependiendo de las prioridades (inicial o actualizada) de los objetos solicitados que se van a enviar por medio de las seleccionadas de las conexiones al segundo componente. Así, el componente intermedio podría suspender una o más conexiones, de tal manera que los objetos que tengan una prioridad alta puedan hacer uso del ancho de banda adicional que se libera en el vínculo entre el componente intermedio y el segundo componente. Con el fin de no desperdiciar el ancho de banda disponible, el componente intermedio se configura preferiblemente de tal manera que asegure que un vínculo formado por una o más conexiones se usa totalmente antes de suspender una o más conexiones del mismo.
Existen varias técnicas para suspender una conexión. Por ejemplo, se podría bloquear la transmisión sobre la conexión durante un período de tiempo específico mientras se deja la conexión como tal (estado intermedio = abierta). Alternativamente, la conexión se podría cerrar (estado intermedio = cerrado) mientras se guarda el estado de la conexión. En tal caso, la conexión se podría volver a abrir en un instante posterior en el mismo estado en el que se ha cerrado. De acuerdo con una tercera posibilidad, la conexión se podría cerrar por completo sin guardar ninguna información sobre el estado de la conexión. En cualquier caso, se puede informar al segundo componente que el objeto o los objetos que se van a transmitir a través de la conexión cerrada se enviarán posteriormente, bien en respuesta a o independientemente de una solicitud de objeto (repetida).
En lugar de o además de suspender conexiones individuales, la transferencia de objeto se podría retardar también mediante un ajuste basado en la prioridad de la velocidad de transferencia. En este sentido, se podría asignar dinámicamente una participación específica de posibilidades de tratamiento a cada objeto o a cada conexión. En el caso de conexiones múltiples, todas las conexiones o al menos algunas conexiones obtienen una participación del tiempo de unidad central de tratamiento (en adelante CPU), es decir, una participación en el ancho de banda de red. La participación de las posibilidades de tratamiento asignada a una conexión específica se podría cambiar (por ejemplo disminuyéndola constantemente) mientras uno o más objetos son transferidos por medio de la conexión respectiva.
Se ha mencionado anteriormente que la transferencia de objeto se basa en una pluralidad de solicitudes de objeto relacionada con objetos a los que se ha hecho referencia en uno o más códigos. De acuerdo con una primera variante del invento, se dispone fácilmente de un código para al menos uno del segundo componente y del componente intermedio. De acuerdo con una segunda variante del invento, el código tiene todavía que cargarse por uno cualquiera del segundo componente y del componente intermedio. En éste último caso, el componente intermedio podría enviar una solicitud de código que se ha generado por el segundo componente o por el componente intermedio al primer componente o a un tercer componente que sea diferente del primer componente. Cuando se recibe del primer componente o del tercer componente el código solicitado, podría ser analizado por el componente intermedio con respecto a referencias a objetos comprendidos dentro del código. Entonces, se podrían establecer cualesquiera referencias a objetos contenidos en el código con el fin de asignar prioridades (iniciales) a los objetos a los que se haya hecho referencia en el código recibido. El código recibido del primer o del tercer componente se podría enviar eventualmente por el componente intermedio al segundo componente.
Tras recibir una respuesta del primer componente, el objeto solicitado contenido en la respuesta se podría evaluar con respecto a la prioridad del objeto recibido. Por ejemplo, en ese sentido se podrían analizar al menos uno del tamaño del objeto, contenido del objeto y un encabezamiento de la respuesta. Luego, se puede determinar si tiene que actualizarse o no una prioridad inicial de un objeto recibido.
Preferiblemente, al menos alguna información sobre cada objeto o cada clase de objeto se guarda, por ejemplo, mediante el componente intermedio. La información guardada podría comprender información de prioridad para objetos individuales o clases de objetos, en la forma de una lista de prioridades. Esta lista de prioridades se podría establecer en repetidas ocasiones. Este establecimiento se podría relacionar al menos con una operación de actualizar la información de prioridad y de suprimir objetos o clases de objetos de la lista de prioridades.
El invento se podría realizar como una solución de hardware o como una solución de software. En el caso de una solución de hardware, el invento se podría realizar en la forma de un producto de programa de ordenador que comprenda partes de código de programa para llevar a cabo las etapas individuales del invento. El producto de programa de ordenador se podría guardar en un medio de almacenamiento legible por ordenador.
De acuerdo con una realización preferida del invento, el componente intermedio se implementa como un componente proxy (filtro) en la forma de una parte de software que se ejecuta sobre el primero o el segundo componente de la red de comunicaciones. Si el invento se va a implementar como una solución de hardware, el componente intermedio podría estar constituido por una parte separada de hardware como un servidor proxy dispuesto entre los componentes primero y segundo en la red de comunicaciones. El componente intermedio podría incluir una o más interfaces de comunicación apropiadamente configuradas para comunicar con al menos el primero y el segundo componente de la red de comunicaciones, así como por una unidad para realizar el tratamiento en contexto con el retardo de objetos.
En la red de comunicaciones existe un primer vínculo entre el componente intermedio y el primer componente y un segundo vínculo entre el componente intermedio y el segundo componente. Preferiblemente, el primer vínculo y el segundo vínculo tienen diferentes tasas de transferencia. Por ejemplo, se podría proveer un vínculo rápido entre el componente intermedio y el primer componente, y un vínculo comparativamente más lento entre el componente intermedio y el segundo componente. Esta situación se presenta usualmente cuando el primer componente es un servidor de red, el segundo componente es un cliente de red y el componente intermedio está situado en las proximidades de (en cuanto a vínculos de red) o en el servidor de red. No obstante, el componente intermedio podría también estar situado muy cerca (en cuanto a vínculos de red) o en el cliente de red. En tal caso, el vínculo entre el componente intermedio y el segundo componente (el cliente de red) tiene una capacidad mucho mayor y un estado latente mucho menor que el vínculo entre el componente intermedio y el primer componente (el servidor de red).
Debe hacerse notar que el invento no está restringido al caso en que el primer componente actúa como un servidor de red y el segundo componente actúa como un cliente de red. En particular, el componente intermedio se podría usar también para mejorar la transferencia de objetos entre dos clientes de red o dos servidores de red.
De acuerdo con una realización especialmente preferida del invento, el componente intermedio es parte de una red de comunicaciones inalámbricas como una red celular GSM, GPRS, etc. En dicha red, el segundo componente podría estar constituido por un terminal móvil.
Breve descripción de los dibujos
Los aspectos y ventajas adicionales del invento resultarán evidentes tras la lectura de la siguiente descripción detallada de realizaciones preferidas del invento y con referencia a los dibujos, en los que:
La Figura 1 es un diagrama esquemático que ilustra una transferencia de objeto entre un servidor de red y un cliente de red de acuerdo con el HTTP;
La Figura 2 es un diagrama de bloques de un sistema de red que comprende un componente intermedio en la forma de un servidor proxy de HTTP de acuerdo con el invento;
La Figura 3 es un diagrama de bloques del servidor proxy de HTTP de la Figura 2;
La Figura 4 es un diagrama esquemático que representa un retardo de objeto basado en redirección en el sistema de red dibujado en la Figura 2;
La Figura 5 es un diagrama de flujo que refleja las etapas que preceden a un retardo de objeto;
La Figura 6 es un diagrama de flujo que presenta las decisiones implicadas en una transferencia de objeto de acuerdo con el invento; y
La Figura 7 es un diagrama de bloques que representa un componente proxy de acuerdo con el invento situado en un cliente de red.
Descripción de una realización preferida
Aunque el presente invento se puede llevar a la práctica en cualquier red de comunicaciones en la que se realice una transferencia de objeto basada en solicitudes a través de un componente intermedio, la descripción que sigue de realizaciones preferidas se expone a título de ejemplo con respecto a la transferencia de código HTML de acuerdo con el protocolo HTTP sobre la WWW. En principio, se podrían usar también protocolos de transferencia diferentes del HTTP, como el protocolo de transporte inalámbrico WAP o algunos mecanismos de llamada de procedimiento distante (en adelante RPC), y códigos diferentes del HTML, por ejemplo el lenguaje WAP (en adelante WML) o cualesquiera derivaciones del lenguaje extensible (en adelante XML). Además, aunque la descripción siguiente concierne principalmente a una transferencia de objeto de un servidor a un cliente, la transferencia de objeto se podría realizar también entre cualesquiera de dos o más componentes de red.
En la Figura 2 se ha representado un diagrama de bloques de un sistema de red 10 de acuerdo con el invento. Como resulta evidente a partir de esta Figura, el sistema 10 de red comprende un primer componente en la forma de un servidor 20, un componente intermedio en la forma de un servidor proxy 30 de HTTP y un segundo componente en la forma de un cliente 40. El servidor proxy 30 está dispuesto en el sistema 10 de red de tal manera que tiene un vínculo rápido 12 hacia el servidor 20 y un vínculo 14 comparativamente más lento hacia el cliente 40. Cada vínculo 12, 14 está constituido por una pluralidad de conexiones de protocolo de control de transmisión (en adelante TCP) 50. Cada conexión 50 de TCP está configurada para permitir la transferencia de las solicitudes de HTTP y las respuestas de HTTP entre el servidor 20 y el cliente 40.
El servidor proxy 30 realiza algunas funciones tradicionales de filtración tales como acumular y filtrar objetos. Adicionalmente, el servidor proxy 30 está configurado para retardar artificialmente un objeto que se recibe del servidor 20 y que tiene que enviarse al cliente 40. Esto se hace mediante el uso de una combinación de suspensión temporal de transferencia de datos en algunas conexiones 50 y de mensajes de redirección de HTTP que fuerzan a un explorador que funciona sobre el cliente 40 a repetir un objeto solicitado después de un período determinado de tiempo. Mediante el uso de estos mecanismos, el servidor proxy 30 reordena las respuestas de HTTP recibidas del servidor 20 de tal manera que los objetos que tengan una prioridad mayor se descarguen primero al cliente 40. Para este fin, el servidor proxy 20 asigna dinámicamente prioridades a los objetos que se van a enviar al cliente 40. Con el fin de asegurar que el retardo de los objetos menos importantes no dé lugar a que el vínculo 14 entre el servidor proxy 30 y el cliente 40 llegue a trabajar en vacío, el servidor proxy 30 vigila continuamente o al menos repetidamente el tráfico en este vínculo 14.
En la Figura 3 se ha representado con más detalle la construcción del servidor proxy 30. Como se puede ver evidentemente en la Figura 3, el servidor proxy 20 comprende una interfaz 32 de comunicaciones acoplada entre el primer vínculo 12 al servidor 20 y el segundo vínculo al cliente 40. La interfaz 32 de comunicaciones está configurada de tal manera que permite el envío de solicitudes de objeto para finalizar la recepción de los objetos solicitados del servidor 20. Una unidad 34 de tratamiento del servidor proxy 30 comunica con la interfaz 32 de comunicaciones. La unidad 34 de tratamiento permite establecer y/o adaptar la prioridad de cualquier objeto recibido del servidor 20 por medio del primer vínculo 12. Adicionalmente, la unidad 34 de tratamiento permite asignar una prioridad inicial a un objeto solicitado basándose en un análisis de al menos uno de la solicitud de objeto y del código que se refiere al objeto solicitado. Más adelante se describen con más detalle esquemas posibles de asignación.
Dependiendo de la prioridad inicial o actualizada de un objeto solicitado, la unidad 34 de tratamiento controla la interfaz 32 de comunicaciones de tal manera que un objeto solicitado recibido del servidor 30 es retardado o enviado a través del segundo vínculo 14 al cliente 40. Si un objeto solicitado recibido del servidor 20 tiene que retardarse, se guarda provisionalmente en una memoria intermedia 36 a la que se puede acceder tanto por medio de la interfaz 32 de comunicaciones como por la unidad 34 de tratamiento. Alternativa o adicionalmente, la memoria intermedia 36 se puede implementar como un componente de software o de hardware de la unidad 34 de tratamiento.
Además de las tareas anteriormente descritas, la unidad 34 de tratamiento está configurada adicionalmente de tal manera que permita asignar un atributo específico a un objeto que tiene que retardarse (un formato ejemplar de este atributo se describe más adelante con mayor detalle). La unida 34 de tratamiento permite controlar la interfaz 32 de comunicaciones de tal manera que la interfaz 32 de comunicaciones informe al cliente 40 sobre este atributo. Si la interfaz 32 de comunicaciones recibe del cliente 40 una referencia al atributo, la unidad 34 de tratamiento evalúa esta referencia y controla la interfaz 32 de comunicaciones de tal manera que el objeto retardado al que se ha asignado previamente este atributo y que actualmente está guardado en la memoria intermedia 36, o bien es enviado al cliente 40, o bien se retarda adicionalmente. Podría llegar a ser necesario un retardo adicional del objeto guardado en la memoria intermedia 36 si deben enviarse primero al cliente 40 objetos de una prioridad más alta.
A continuación se describe, a título de ejemplo, un modo operativo preferido del sistema 10 de red mostrado en la Figura 2.
Cuando un usuario entra en un URL, hace clic en un vínculo o sigue una señal, el explorador que se ejecuta sobre el cliente 40 emite una solicitud de HTTP para la correspondiente página de HTML que incluye el código de HTML. La solicitud de HTTP emitida por el explorador es recibida por el servidor proxy 30 a través del vínculo 14 y enviada a través del vínculo 12 al servidor de destino 20. El servidor 20 contesta enviando el código de HTML para la página solicitada al servidor proxy 30, el cual analiza el código de HTML recibido del servidor 20 para asignar una prioridad inicial a cualquier clase de objetos como vínculos, tramos, secuencias de comandos, imágenes, etc, a los que se haya hecho referencia en el código de HTML (fase de primer análisis).
Independientemente de este análisis del código HTML, el servidor proxy 30 envía el código de HTML a través del vínculo 14 al cliente 40. Cuando el explorador que se ejecuta sobre el cliente 40 recibe la página de HTML que incluye el código de HTML, procesa el código de HTML. Si el explorador detecta que el código de HTML incluye objetos adicionales, emite solicitudes adicionales de HTTP para los objetos a los que se haya hecho referencia en el código de HTML. Estas solicitudes de HTTP para objetos adicionales se reciben y evalúan mediante el servidor proxy 30. Para la mayor parte de los objetos solicitados, se habrá asignado ya una prioridad inicial durante el análisis previo por parte del servidor proxy 30 del código de HTML que se haya enviado al servidor 30. Sin embargo, en esta segunda fase de análisis el servidor proxy 30 o bien asigna prioridades iniciales a los objetos a los que no se haya asignado aún una prioridad, o bien actualiza la prioridad de dichos objetos a los que ya se haya asignado una prioridad. La prioridad se actualiza basándose en la información disponible en la solicitud de HTTP recibida del cliente 40.
El servidor proxy 30 envía al servidor 20 cualesquiera solicitudes HTTP de objetos adicionales recibidas del cliente 40. El servidor 20 responde enviando los objetos solicitados al servidor proxy 30. El servidor proxy 30 analiza las respuestas de HTTP (incluyendo los objetos solicitados) del servidor 20 en una tercera fase de análisis y actualiza - si es necesario - las prioridades de los objetos comprendidos en la respuesta de HTTP. Adicionalmente, el servidor proxy 30 establece la prioridad relativa de cualquier objeto recibido con respecto a la prioridad de objetos recibidos previamente que todavía estén guardados en la memoria intermedia 36 (véase Figura 3) y las prioridades de los objetos que se esperan pronto. La información relativa a los objetos que se recibirán pronto del servidor 20 se puede obtener del código de HTML que haya sido enviado previamente al cliente 40 o de las solicitudes de HTML del cliente 40 para las que los objetos correspondientes no se hayan recibido todavía del servidor 20. Alternativa o adicionalmente, el servidor proxy 30 podría configurarse de tal manera que compare una prioridad de un objeto que se acabe de recibir del servidor 40 con un valor absoluto como un umbral de prioridad.
Basándose en la evaluación de la prioridad absoluta o relativa de un objeto y en el tráfico actual y/o previsto en el vínculo 14, el servidor proxy 30 decide si hay que retrasar este objeto, por ejemplo, si este objeto se va a guardar provisionalmente en la memoria intermedia 36 o si la correspondiente solicitud de HTTP no se va a enviar todavía al servidor 20, o si el objeto se va a enviar inmediatamente al cliente 40.
El retardo intencionado de los objetos individuales mejora la transferencia total de objetos desde el punto de vista de un usuario. Por ejemplo, es bien sabido que la importancia relativa de los diversos objetos incluidos en una página web varía enormemente: una imagen que se use para construir un menú gráfico podría ser esencial para la navegación de un sitio, mientras que una imagen de fondo simplemente hace que la página parezca más bonita. Por tanto, el invento se puede emplear para proporcionar al usuario en primer lugar la información más importante. Tan pronto como haya suficiente información de una página web presentada visualmente en la pantalla de un usuario, éste puede decidir hacer clic en un vínculo y solicitar otra página web sin tener que esperar por las partes restantes (menos importantes) de la página web anterior que todavía se está transfiriendo. Como resultado, el usuario ya no está obligado a esperar hasta que sean transferidos algunos objetos no interesantes antes de poder ver los importantes. Esto es especialmente útil conjuntamente con la Internet móvil, que usualmente es más lenta y más cara que la Internet fija.
Asignación y ajuste de prioridades
Como ha resultado evidente a partir de lo anteriormente expuesto, el servidor proxy 30 puede asignar o ajustar la prioridad de un objeto a enviar al cliente 20 durante tres fases diferentes, a saber, cuando se ha encontrado en un código de HTML una referencia a ese objeto (es decir, en un objeto previo) que tenga que enviarse al cliente 40, cuando el explorador que ejecuta sobre el cliente 40 emite una solicitud de HTTP relacionada con dicho objeto, o cuando la respuesta correspondiente HTTP que contiene el objeto solicitado se recibe del servidor 20.
En lo que sigue se describen a título de ejemplo varios planes para asignar o actualizar prioridades durante cada una de estas tres fases. Durante cualquiera de las tres fases, se genera o actualiza una lista de prioridades que contiene información de prioridad para objetos individuales o clases de objetos. En la lista de prioridades, los objetos individuales o clases de objetos se ordenan con respecto a una prioridad creciente o decreciente. El orden de los objetos en la lista de prioridades se puede considerar así como información de prioridad. Sin embargo, la información adicional de prioridad como los valores (números) absolutos o relativos de prioridad podría alternativa o adicionalmente formar parte de la lista de prioridades.
La prioridad exacta asignada a objetos o clases de objetos específicas depende de la implementación, y, en la realización ejemplar, es configurable por el operador del servidor proxy 30 o por un usuario del explorador que funciona sobre el cliente 40. Por ejemplo, con el fin de permitir que el operador del servidor proxy 20 tenga más control sobre la prioridad de algunos objetos, podrían existir una o varias listas de URL (usando conjugación de patrones) que permitan que el operador aumente o disminuya la prioridad de los objetos que aparezcan en estas listas. Por ejemplo, un operador podría decidir aumentar o disminuir la prioridad de todas las imágenes descargadas de una compañía de publicidad. Las mismas posibilidades se podrían poner a la disposición del usuario. Por ejemplo, el usuario podría enviar sus preferencias al servidor proxy 30. Esto puede hacerse mediante un software específico que se ejecute sobre el cliente 40 o bien utilizando páginas web designadas provistas directamente por el servidor proxy 30 y que permitan al usuario ajustar sus preferencias.
En la primera fase de análisis, el servidor proxy 30 puede asignar una prioridad inicial a un objeto mediante el análisis de un código de HTML que haya sido solicitado del servidor 20 por el cliente 40. En particular, se podrían establecer en ese sentido referencias a objetos a los que se haya hecho referencia en el código de HTML. De este modo, se podría generar una lista de prioridades que relacione objetos individuales a los que se haya hecho referencia en el código de HTML en el orden siguiente (los objetos con la máxima prioridad se mencionan en primer lugar):
- vínculos con otras páginas
- tramos de datos
- imágenes en línea (si la etiqueta IMG incluye información de anchura y altura, esta información se puede usar para realinear la prioridad de las imágenes dependiendo de las dimensiones previstas, de tal manera que las imágenes más pequeñas tengan una prioridad más alta que las imágenes grandes).
- hojas de estilo
- secuencias de comandos (JavaScript, VBScript, etc.), objetos empotrados y subprogramas
- imagen de fondo (fondo de página, fondo de mesa, hoja de estilo, etc.
- cualquier objeto que ya se haya enviado al cliente 40 obtiene la prioridad mínima.
Además, se puede disminuir la prioridad de un objeto específico si el objeto no está situado en el mismo servidor 20 o en el mismo dominio que la página actual de HTML.
Se produce una posibilidad adicional para asignar o ajustar la prioridad de un objeto cuando el explorador emite una solicitud para ese objeto y dicha solicitud es recibida por el servidor proxy 30. En tal caso, el servidor proxy 30 puede analizar la solicitud de HTTP en un contexto de URL (segunda fase de análisis). Puesto que ya se han asignado las prioridades iniciales durante el análisis del código de HTML que condujo a esa solicitud de HTTP, el análisis de la solicitud de HTTP resultará usualmente en un ajuste de la prioridad inicial. Sin embargo, en algunos casos se podrían asignar también prioridades iniciales (véase descripción anterior).
El ajuste o la asignación de prioridades iniciales en la segunda fase de análisis se pueden realizar dependiendo de la información adicional disponible, por ejemplo, en el encabezamiento de la solicitud de HTTP. Se podrían implementar una o más de las reglas siguientes para actualizar las prioridades:
-
El análisis conduce al resultado de que el explorador ya ha solicitado una vez el mismo objeto. A dicho objeto usualmente se le asigna una prioridad muy alta, con el fin de evitar los bucles infinitos causados por exploradores que no cumplan la norma HTTP/1 e ignoren el encabezamiento "Reintentar- Después de" (este encabezamiento se describe con más detalle a continuación).
-
El objeto no tiene todavía una prioridad, pero la extensión parece como HTML (HTML), "HTM", o XML ("XML") o parece como un índice de directorio (finales en "/"). Esta asignación de prioridad asegura que una página de HTML solicitada de las señales o tecleada directamente se solicitará con una prioridad alta.
- El explorador hace una solicitud condicional de HTTP para un objeto, usando condiciones si-modificada-desde o condiciones similares. Esto indica que el explorador ha guardado probablemente una copia del objeto. Se espera que la respuesta sea pequeña si la copia guardada todavía es válida (código de HTML de respuesta "304 no modificado").
- Se encontró el URL del objeto solicitado mientras se analizaba una página de HTML anterior.
- Cualquier objeto que no se hubiese insertado en la lista mientras se analizaban las etiquetas de HTML de una página anterior se solicitó probablemente de un modo indirecto mediante una secuencia de comandos, y debería obtener una prioridad menor que la mayor parte de los objetos solicitados.
En la tercera fase de análisis, el ajuste de las prioridades de los objetos se basó en un análisis de la respuesta de HTTP del servidor 20. El ajuste de las prioridades en la tercera fase de análisis (así como en la segunda fase de análisis anteriormente mencionada) se puede calcular como una suma ponderada de varios criterios. Los pesos relativos podrían ser configurables por el operador del servidor proxy 30 o por el usuario del explorador que funciona sobre el cliente 40.
En la tercera fase de análisis, todos los objetos tendrán probablemente una prioridad asignada a ellos. Sin embargo, esta prioridad se puede actualizar antes de enviar los objetos solicitados al cliente 40. Para ajustar las prioridades, se podrían establecer los encabezamientos y contenidos de las respuestas HTTP recibidas del servidor 20. Luego se podrían ajustar las prioridades de acuerdo con una o más de las reglas siguientes.
- Establecimiento del código de respuesta: la prioridad relativa de las respuestas de HTTP depende del primer dígito del código de respuesta. Los códigos de error (4xx.5xx) deberían tener una prioridad más alta que las respuestas normales (2xx).
- Establecimiento del tipo de contenido: un código de HTML debería tener una prioridad mayor que cualquier imagen.
- Establecimiento del tamaño de los objetos (obtenido de la longitud del contenido si se ha especificado en los encabezamientos, o del tamaño total si el objeto ya se ha guardado): los objetos más pequeños deberían tener una prioridad un poco mayor que los grandes.
- Análisis del contenido: por ejemplo, a las imágenes animadas se les puede asignar una prioridad menor que a las imágenes estáticas. El análisis del contenido puede también constituir la base para estimar el tamaño del objeto si no se dispone de esta información en el encabezamiento de HTTP y el objeto no se ha guardado todavía.
- Si el código de respuesta es una redirección permanente o provisional (3xx) que especifique una nueva localización para el objeto solicitado, entonces esta nueva localización obtiene la misma prioridad que el objeto original.
En las tres fases de análisis anteriormente descritas, el servidor proxy 30 establece y actualiza las prioridades de los objetos que se van a transferir al cliente 40. De ese modo, el servidor proxy 30 mantiene cierta información sobre cada objeto como el URL de objetos, prioridad, hora de la última solicitud y, si se requiere, algunos parámetros adicionales. Sin embargo, esta información no se puede mantener indefinidamente, porque de lo contrario el servidor proxy 30 funcionaría fuera de memoria. Además, si a un objeto al que se haya asignado una prioridad alta nunca se le solicita, se toma preferiblemente la medida de que no impida que se transfieran otros objetos.
Por estas razones, se implementa una rutina que asegure que se suprima la información que ya no esté actualizada o que ya no se necesite. Para ello, se podrían usar uno o más de los mecanismos siguientes:
- Cualquier objeto que se haya transferido de forma satisfactoria al cliente es marcado como que se ha enviado o se traslada a una lista separada de objetos que se han enviado al cliente 40.
- Se establece un tamaño máximo para una o más listas que contengan información relevante y se configura que los objetos más antiguos o los objetos con la mínima prioridad caduquen primero.
- Siempre que el cliente reconfigura una conexión de TCP antes de que el objeto se haya transferido totalmente (lo que significa que el usuario ha detenido la descarga y podría haber seleccionado otra página), aclarar la información de los objetos a enviar.
- Como una alternativa a la solución anterior, mantener contrarreferencias para cada objeto con el fin de asociar cada página de HTML con los objetos que contiene, y viceversa. Cuando el cliente 40 reconfigura una conexión de TCP, retirar solamente los objetos que están incluidos en la misma página de HTML.
- La prioridad de todos los objetos se puede disminuir después de un período de tiempo especificado o después que se han tratado algún número de solicitudes de HTTP o de respuestas de HTTP.
\vskip1.000000\baselineskip
Reordenación de objetos
En el capítulo anterior se han descrito la generación de una lista de prioridades para los objetos solicitados que se van a transferir al cliente 40, así como posibles mecanismos de actualización para esta lista de prioridades. Usualmente, los objetos solicitados serán recibidos por el servidor proxy 30 del servidor 20 en un orden que es diferente del orden indicado en la lista de prioridades. Por consiguiente, el servidor proxy 30 tiene que reordenar los objetos recibidos del servidor 20 de tal manera que se envíen desde el servidor proxy 30 al cliente 40 en un orden que refleje el orden en la lista de prioridades con la mayor aproximación posible. El servidor proxy 30 reordena los objetos recibidos del servidor 20 mediante el retardo intencionado de los objetos que tienen una prioridad inferior y mediante el envío al cliente 40 de los objetos que tengan una prioridad más alta sin ningún retardo sustancial.
El servidor proxy 30 usa una combinación de diferentes mecanismos de retardo para reordenar los objetos recibidos del servidor 20. En lo que sigue se describirán con más detalle a título de ejemplo dos de estos mecanismos de retardo, a saber, la suspensión de las conexiones de TCP, por una parte, y las redirecciones de HTTP por otra parte.
\vskip1.000000\baselineskip
Suspensión de las conexiones de TCP
Como resulta evidente en la Figura 2, el vínculo 14 entre el servidor proxy 30 y el cliente 40 está constituido por una pluralidad de conexiones 50 de TCP. Dependiendo de las prioridades de los objetos solicitados que se van a enviar por medio de conexiones individuales de las conexiones 50, una o más de las conexiones 50 que están destinadas para la transferencia de objetos que tienen una prioridad baja están suspendidas. Esta suspensión de conexiones individuales libera cierto ancho de banda en el vínculo 14 que ahora está disponible para transferir con preferencia objetos que tengan una prioridad más alta. Por consiguiente, los objetos que tengan una prioridad más alta se descargarán antes que los objetos que tengan una prioridad más baja.
La suspensión de una conexión individual 50 se realiza de tal manera que la conexión 50 se deja abierta sin transferir objetos durante un período determinado de tiempo. Alternativamente, la suspensión de una conexión 50 se podría efectuar cerrando la conexión 50 con o sin guardar el estado de la conexión 50 antes de su suspensión. Cuando el estado de la conexión suspendida se guarda, se puede abrir en un momento posterior en el mismo estado en que se ha suspendido (es decir, cerrado).
La suspensión de una conexión 50 tiene la ventaja de que no hay que enviar datos extraordinarios a través del vínculo 14. Preferiblemente, una conexión 50 se suspende sólo si el ancho de banda liberado se puede usar totalmente por algunas otras conexiones 50 para la transferencia de objetos que tengan una prioridad alta.
Por tanto, el servidor proxy 30 está configurado de tal manera que comprueba que el vínculo 14 se ha usado totalmente antes de suspender una conexión 50, a fin de no desperdiciar ancho de banda disponible. Una rutina posible para predecir si el vínculo 14 está o estará parcialmente vacío incluye comparar la salida promedio (durante los N últimos segundos) de todas las conexiones que van al cliente 40 con la cantidad de datos que actualmente se estén acumulando o guardando en la memoria intermedia 36 del servidor proxy 30 (véase Figura 3) y están listos para ser enviados. Se podrían implementar otras técnicas y en particular más sencillas para estimar la utilización del vínculo 14, así como, especialmente, si se conoce por otros medios el ancho de banda disponible en el vínculo 14.
Redirecciones de HTTP
Si el servidor proxy 30 espera que los objetos que tienen una prioridad alta tendrán que transferirse pronto al cliente 40 (por ejemplo, porque el servidor proxy 30 ha detectado previamente vínculos a estos objetos mientras enviaba un código de HTML de una página de HTML al cliente 40), y la suspensión de una conexión 50 desperdiciaría algo de ancho de banda porque actualmente no habría nada más para transferir en las otras conexiones 50, entonces el servidor proxy 30 podría utilizar otro plan de retardo. Un plan posible de retardo que se podría aplicar en tal caso incluye dar instrucciones al cliente para repetir una solicitud de objeto en un momento posterior.
Aunque el HTTP especifica que cualesquiera respuestas de HTTP deben enviarse al cliente 40 en el mismo orden con que el explorador que funciona sobre el cliente 40 ha emitido las solicitudes de HTTP, es posible dar instrucciones al explorador para reintentar más tarde una solicitud de HTTP. Esto se puede hacer enviando una respuesta de HTTP con el código de estado "302" al cliente 40, junto con el campo de encabezamiento "Reintentar-Después de". Este campo del encabezamiento comunica al cliente 40 que reintente su solicitud de HTTP después de un período de tiempo especificado. En respuesta a la recepción del código de estado "302" (posiblemente incluyendo el campo de encabezamiento "Reintentar-Después de"), los exploradores actuales reprograman la solicitud HTTP después que se han procesado todas las solicitudes de HTTP pendientes.
El código de estado "302", según se ha especificado en la norma HTTP 1.1,comunica al explorador que un objeto determinado se puede encontrar (provisionalmente) en una localización que es diferente de la que se ha solicitado. La respuesta de HTTP enviada al cliente 40 incluye la nueva localización del objeto. Este mecanismo se usa para implementar el plan de retardo de acuerdo con el invento.
De acuerdo con el invento, el servidor proxy 30 genera un atributo en la forma de un nuevo URL (virtual) para el objeto a retardar. El servidor proxy 30 entonces da instrucciones al explorador que funciona sobre el cliente 40 de intentar otra vez la solicitud de HTTP, usando este atributo provisional (es decir, URL) como la nueva localización del objeto. De ese modo, el explorador ha recibido instrucciones para reprogramar la solicitud de HTTP en un momento posterior. Cuando el explorador repite la solicitud de HTTP (incluyendo el atributo provisional, es decir el URL virtual), el servidor proxy 30 convierte el atributo al URL original, y envía la solicitud de HTTP al servidor 20. Alternativamente, la solicitud original de HTTP se podría haber enviado al servidor 20 después de su recepción por el servidor proxy 30 En tal caso, la respuesta de HTTP recibida del servidor 20 se guarda provisionalmente por el servidor proxy 30 hasta que recibe del cliente 40 la solicitud repetida de HTTP.
En lo que sigue, se describe a título de ejemplo con más detalle el mecanismo de retardo del invento con referencia a las Figuras 4 y 5. Se supondrá que la solicitud de HTTP recibida por el servidor proxy 30 del cliente 40 se refiere a un objeto que el servidor proxy 30 considera de baja prioridad.
En una primera etapa 402 de la Figura 4, el servidor proxy 30 recibe una solicitud de HTTP del cliente 40 por medio del vínculo 14. En el caso ejemplar de HTTP, esta primera solicitud del cliente tiene el siguiente formato:
GET htp://ejemplo.com/some/image.png HTTP/1.1
Central: ejemplo.com
Agente de usuario: Moxilla/5.0 (X11; Linux 686; en-US; rv: 0.9.9
Gecko/20020311
Conexión: muy próxima
\vskip1.000000\baselineskip
En respuesta a la solicitud de HTTP recibida en la etapa 402 del cliente 40, el servidor proxy 30 redirige al cliente 40 en la etapa 304 a una nueva localización (virtual) y da instrucciones al cliente 40 para esperar un período determinado de tiempo (retardo) antes de volver a intentar la solicitud de HTTP. El mensaje de redirección procedente del servidor proxy 30 basándose en el código de estado "302" según se ha especificado en la norma HTTP 1.1 puede tener el siguiente formato:
HTTP /1.1 302 encontrado
Fecha: martes, 21 marzo 2002 15:12:47
Servidor: PrioTest/0.9
Localización: HTTP//example.com /some/() image (0001.png
Reintentar-después de: 5
Conexión: muy próxima
Transferencia-Codificación: fragmentada
Tipo de contenido: texto/html: conjunto de caracteres = iso-8859-1
\vskip1.000000\baselineskip
(sigue algún texto humano legible)
\vskip1.000000\baselineskip
El servidor proxy 30 puede ahora solicitar del servidor 20 el objeto en cualquier momento tras la recepción de la solicitud inicial de HTTP del cliente 40 (etapa 402) y el momento en el que decide descargar el objeto al cliente 40 (etapas 406 y 408).
Después de recibir el mensaje de redirección anteriormente expuesto, el cliente 40 espera durante un período de tiempo especificado en el mensaje de redirección, es decir, cinco segundos (o hasta que se hayan transferido todos los demás objetos). En la etapa 412, el cliente 40 repite entonces la solicitud de HTTP que indica la nueva localización (virtual) del modo siguiente:
\vskip1.000000\baselineskip
GET HTTP: //example.com/some /() image (00001). png HTTP/1.1
Central: example.com
Agente de usuario: Mozilla/5.0 (X11; Linux i686; en-US; rv:0.9.9)
Gecko/20020311
Conexión: muy próxima
\vskip1.000000\baselineskip
Tras recibir del cliente la solicitud repetida de HTTP, el servidor proxy 30 decide si retarda adicionalmente el objeto solicitado (por ejemplo, mediante la suspensión de una conexión 50 o mediante un mensaje adicional de redirección) o si envía el objeto retardado al cliente 40. Si el servidor proxy 30 decide enviar el objeto retardado sin ningún retardo adicional, esta operación se puede hacer en el siguiente formato:
HTTP/1.1 200 OK
Fecha: martes, 21 de marzo 2002 15:12:50
Servidor: Apache/1.3.23 (Unís)
Tipo de contenido: imagen/png
\vskip1.000000\baselineskip
Longitud de contenido: 1520
\vskip1.000000\baselineskip
(sigue el contenido de la imagen)
\vskip1.000000\baselineskip
A continuación se explican las decisiones tomadas por el servidor proxy 30 en el transcurso de la rutina de redirección anteriormente descrita con referencia a la Figura 5.
En la etapa 502, el servidor proxy 30 recibe la solicitud de HTTP del cliente 40. En la etapa siguiente 504 el servidor proxy 30 determina si el URL incluido en la solicitud de HTTP es un URL modificado, es decir, el resultado de una redirección anterior. Si es así, el servidor proxy 30 descodifica el URL y restablece la localización original en la etapa 506 y se desplaza a través del nodo 508 a la etapa 510. De lo contrario, el método directamente se desplaza desde la etapa 504 por medio del nodo 508 a la etapa 510.
En la etapa 510, el servidor proxy 30 determina si el objeto solicitado por medio de la solicitud de HTTP ya está disponible, es decir, guardado en la memoria intermedia 36 del servidor proxy 30 (véase Figura 3). Si el objeto no se ha guardado, el servidor proxy 30 solicita del servidor 20 el objeto, o lo marca para una recuperación posterior en la etapa 514. Desde la etapa 514, el método se desplaza por medio del nodo 512 a la etapa 516. La etapa 516 se puede alcanzar también directamente desde la etapa 510 a través del nodo 512 en el caso de que ya esté disponible el objeto solicitado por el cliente 40.
En la etapa 516, la respuesta de HTTP que incluye el objeto solicitado ya está lista para enviarse al cliente 40. Esto corresponde a la primera etapa en el diagrama de flujo de la Figura 6, que se describe más adelante.
En principio, el mensaje de redirección (etapa 504 en la Figura 4) se puede enviar al cliente 40 en cualquier momento mientras se realizan las etapas 502 a 516 o después de la etapa 516. Debe hacerse notar que la disponibilidad de un objeto (es decir, si un objeto solicitado ya está guardado, actualmente en transferencia o si el objeto todavía no ha sido solicitado) es un factor adicional que influye en la prioridad inicial de un objeto solicitado.
Decisiones de reordenación
Una vez que la respuesta de HTTP está lista para enviarse al cliente 40 (etapa 516 de la Figura 5), hay que decidir si un objeto comprendido en la respuesta de HTTP debería realmente descargarse al cliente 40, si el cliente 40 debería redirigirse o si debería suspenderse la conexión 50 a través de la cual este objeto se va a enviar al cliente 40. En la Figura 6 se ha representado un diagrama de flujo que presenta un plan de decisión a título de ejemplo.
En la etapa 602, la respuesta de HTTP está lista para enviarse al cliente. En la etapa siguiente 604 se evalúa la prioridad de este objeto con respecto al hecho de si hay que actualizar o no la prioridad. Si tiene que actualizarse la prioridad del objeto, el ajuste de prioridad se realiza en la etapa 604.
En la etapa siguiente 606 se establece la prioridad actual del objeto para averiguar si tiene la máxima prioridad de todos los objetos que se están transfiriendo o que se espera transferir pronto. Si en la etapa 606 se determina que el objeto solicitado realmente tiene la máxima prioridad, el método se desplaza a través del nodo 610 a la etapa 612. En la etapa 612, el objeto solicitado se envía al cliente 40.
Si la comparación entre la prioridad del objeto solicitado actualmente y la prioridad de otros objetos, realizada en la etapa 606, conduce al resultado de que el objeto actualmente solicitado no tiene la máxima prioridad, el método continúa con la etapa 514. Con respecto a la etapa 606, debe hacerse notar que, en lugar de comparar la prioridad del objeto solicitado actualmente con las prioridades de otros objetos, también es posible comparar la prioridad del objeto actualmente solicitado con un umbral fijo o añadir una desviación en la comparación para que dos prioridades tengan que diferir en más de un umbral predefinido antes de que la diferencia se considere bastante significativa.
En la etapa 614, el servidor proxy 30 estima si el vínculo 14 al cliente 40 está o estará vacío. Como se ha explicado anteriormente, hay varias formas de hacerlo. Una de ellas consiste en calcular un promedio de funcionamiento de la máxima cantidad de datos que se han enviado y de la que se ha acusado recibo durante los N últimos segundos sobre todas las conexiones 50 que van al mismo cliente 40. Esto da una estimación de la máxima capacidad de ejecución disponible.
El resultado así obtenido se compara luego con la cantidad de datos que están listos para enviarse sobre las conexiones 50 que no están suspendidas. Si el servidor proxy 30 detecta que no tiene datos suficientes para enviar con el fin de llenar el vínculo durante al menos una vez de ida y vuelta completa, entonces considera que existe alguna parte de reserva de ancho de banda en el vínculo 14 hacia el cliente 40, y continúa con la etapa 615.
En la etapa 616 se realiza una comparación similar a la de la etapa 606. Si en la etapa 616 se determina que el objeto solicitado actualmente tiene una prioridad mayor que todos los objetos esperados pronto, el servidor proxy 30 continúa a través del nodo 610 con la etapa 612 y envía el objeto actualmente solicitado de forma inmediata al cliente 40. De lo contrario, el método continúa con la etapa 618 y se envía un mensaje de redirección (código de estado "302") al cliente 40 según se ha expuesto anteriormente en relación con la Figura 4.
La decisión tomada en la etapa 616 podría estar influida por el tamaño del objeto solicitado actualmente (si ya es conocido). Si se sabe que el objeto es pequeño (por ejemplo, menor que el doble del tamaño de un mensaje de redirección), entonces el servidor proxy enviará siempre el objeto en lugar de enviar un mensaje de redirección, incluso si hasta entonces al objeto se le ha asignado una prioridad muy baja (esto puede considerarse como una forma de actualizar la prioridad).
Si, en la etapa 614, se determina que hay datos suficientes para enviar con el fin de llenar el vínculo 14, el método continúa con la etapa 620 y suspende la conexión 50 al cliente a través de la cual se vaya a transferir el objeto actualmente solicitado
Desde una cualquiera de las etapas 612, 618 y 620 el método continúa con la etapa 622. En la etapa 622, el servidor proxy 30 re-evalúa todas las conexiones suspendidas para averiguar si una cualquiera de las conexiones suspendidas 50 tiene que volverse a abrir.
El protocolo HTTP/1.1 soporta la opción de canalización, que permite al cliente 40 enviar varias solicitudes al servidor 20 o al servidor proxy 30 sobre la misma conexión de TCP sin esperar por las respuestas previas. En el caso de que se use la canalización, se podría enviar más de un objeto que esté listo para ser enviado sobre la misma conexión 50 hacia el cliente 40. Es evidente que en ese caso, un objeto que tenga una prioridad baja podría bloquear a un segundo objeto que tenga una prioridad alta que se vaya a enviar sobre la misma conexión 50. Si hay varios objetos a la espera sobre la misma conexión 50, se podría determinar la prioridad máxima o media de estos objetos y considerarse en las etapas 606 y 616. Esto asegura que los objetos de prioridad inferior no bloqueen a objetos de prioridad superior.
Extensiones posibles
Se podrían implementar varias extensiones, algunas de las cuales se han descrito ya brevemente, a la realización ejemplar descrita con referencia a las Figuras 1 a 6.
Una de estas extensiones se refiere a restringir la velocidad de transferencia sobre el vínculo 14, dependiendo de la prioridad de los objetos que se vayan a transferir. Esto podría hacerse, por ejemplo, mediante la asignación de una participación específica de posibilidades de proceso a cada conexión 50 dependiendo de la prioridad de los objetos a transferir. La prioridad de los objetos individuales se disminuye mientras el proceso está ejecutándose. Si el servidor proxy 30 procesa conexiones 50 en una modalidad con retorno al punto de origen, esta característica se implementaría mediante la limitación de la cantidad de datos transmitidos por turno sobre cada conexión 50 mediante un número que se obtiene a partir de la prioridad de ese objeto. La asignación dinámica de posibilidades de proceso se puede combinar ventajosamente con los mecanismos de suspensión y redirección anteriormente descritos. Las posibilidades de proceso pueden incluir también cualquier transformación de los objetos o códigos que se transfieren.
De acuerdo con una extensión adicional del invento, las prioridades se asignan directamente por el explorador que trabaja sobre el cliente 40. El explorador puede entonces programar las solicitudes de HTTP para objetos individuales de acuerdo con su prioridad. Si el explorador asigna directamente las prioridades, hay varios factores adicionales que se pueden usar para refinar la prioridad de cada objeto:
- situación del objeto en la página (coordenadas)
- situación relativa del área visible (los objetos que están fuera del área visible tienen una prioridad inferior)
- si la carga de imágenes o la ejecución de secuencias de comandos están inhabilitadas, el explorador sabe inmediatamente que no es necesario asignar una prioridad a estos objetos.
Adicionalmente, el explorador sabe cuándo un usuario selecciona una nueva página de HTML a partir de las señales o tecleando un nuevo URL. De ese modo, el explorador puede aclarar la lista de objetos que ya no son necesarios.
Una extensión adicional del invento se refiere a un componente proxy que esté situado en el mismo ordenador (cliente) que el explorador o muy cerca de este ordenador en cuanto a vínculos de red. Esta situación se ha representado en la Figura 7.
Como resulta evidente en la Figura 7, el cliente 40 no sólo comprende un componente de explorador 42, sino un componente proxy adicional 30 (que tiene la estructura mostrada en la Figura 3) en comunicación con el componente de explorador 42. En tal caso, el vínculo 14 entre el componente proxy 30 y el componente de explorador 42 tiene una capacidad mucho mayor y un estado latente menor que el vínculo 12 entre el componente proxy 30 y el servidor 20 (no representado en la Figura 7).
Como resultado, el componente proxy 30 del lado cliente influye en la corriente de solicitudes porque no puede hacer mucho sobre la corriente de respuestas. Basándose en la información de prioridades obtenida de la solicitud actual de HTTP y de las respuestas anteriores de HTTP (por ejemplo, códigos anteriores de HTML que se refieran a objetos adicionales) así como en una estimación de la disponibilidad de vínculo, el componente proxy 30 del lado cliente decidirá si se debe enviar al servidor una solicitud de HTTP y/o si debería contestar inmediatamente con un mensaje de redirección.
Las decisiones a tomar son más sencillas de lo que se ha representado en el diagrama de flujo de la Figura 6. Más particularmente, las decisiones se pueden limitar a evaluar si el objeto solicitado actualmente tiene una prioridad más baja que algunos de los objetos que se están transfiriendo o que se espera que se transfieran pronto, y si el vínculo ya se ha usado por completo. Si se dan ambas condiciones, entonces se envía un mensaje de redirección al componente de explorador 42. En todos los demás casos, la solicitud de HTTP se envía inmediatamente al servidor.
Si se usa la canalización de HTTP sobre una conexión específica y se están procesando algunas solicitudes anteriores de HTTP, entonces el componente proxy 30 del lado cliente puede suspender la solicitud de HTTP hasta que pueda tomar la decisión. Tendrá que tomar una decisión lo más tarde cuando se hayan recibido totalmente los objetos anteriores.
Todavía una extensión más del invento se refiere al bloqueo de descargas para algunos objetos basándose en su prioridad. Esto significa que la prioridad que se asigne a los objetos se puede usar también para bloquearlos completamente. Si se ha establecido un umbral sobre la prioridad, todo objeto que tenga una prioridad que sea inferior a este umbral no se enviará al cliente 40. En este caso, el servidor proxy (o el componente proxy) 30 simplemente devolvería al cliente 40 uno de los códigos de estado "4xx" ó "5xx" definidos en la norma HTTP 1.1 cuando detectase dicho objeto. Son códigos de estado posibles "403 prohibido", "409 conflicto" o "servicio 503 no disponible".
Como una extensión adicional, se podrían usar las prioridades asignadas a los objetos para efectuar una prebúsqueda. Un mecanismo de prebúsqueda permite al servidor proxy 30 llenar su memoria intermedia 36 (véase Figura 3) con algunos objetos antes de que el cliente 40 los solicite realmente. Dicho mecanismo de pre-búsqueda se podría basar, por ejemplo, en el análisis de un código de HTML que se envíe desde el servidor proxy 30 al cliente 40 y que incluya referencias a objetos adicionales. Basándose en el análisis de las referencias a los objetos, el componente proxy 30 asigna prioridades a los objetos individuales y, basándose en esta asignación, se define qué objetos se van a buscar previamente y en qué orden. Preferiblemente, los objetos se buscan previamente empezando con los objetos que tengan la prioridad máxima.
De acuerdo con todavía otra extensión adicional que se puede combinar con el mecanismo de prebúsqueda descrito anteriormente, se implementan planes específicos de impulsión que permiten transferir objetos desde el servidor proxy 30 al cliente 40 sin haber recibido del cliente 40 una solicitud explícita de objeto
Una realización del invento se refiere a controlar, en una red de comunicaciones, una transferencia de objeto desde un primer componente a través de un componente intermediario a un segundo componente que está distante del primer componente, en la que la transferencia de objeto se basa en una pluralidad de solicitudes de objeto que están relacionadas con objetos a los que se hace referencia en uno o más códigos para que sean procesados por el segundo u otro componente de la red de comunicaciones. El componente intermediario realiza las etapas de enviar una solicitud de objeto al primer componente; recibir del primer componente (20) el objeto solicitado; establecer y/o actualizar una prioridad del objeto solicitado. Se ha asignado una prioridad inicial al objeto solicitado basándose en un análisis de al menos uno de entre la solicitud de objeto y del código que se refiere al objeto solicitado. Dependiendo de la prioridad del objeto solicitado, el objeto solicitado se retarda, o bien el objeto solicitado se despacha al segundo componente.
En una realización del invento, el retardo se realiza de tal manera que el orden en que los objetos se reciben del primer componente difiera del orden en el que los objetos se despachen al segundo componente.
En una realización del invento, la solicitud de objeto se recibe del segundo componente o se genera por el componente intermediario.
En una realización del invento, el retardo del objeto solicitado incluye al menos una de entre las operaciones de dar instrucciones al segundo componente para repetir la solicitud de objeto, suspender una conexión al segundo componente a través de la cual se va a despachar el objeto solicitado, e informar al segundo componente que el objeto solicitado se despachará automáticamente en un punto posterior en el tiempo.
En una realización del invento, la operación de dar instrucciones al segundo componente para repetir la solicitud de objeto incluye asignar un atributo específico al objeto a retardar; informar del atributo al segundo componente; recibir del segundo componente una referencia al atributo; y, tras la recepción de la referencia al atributo, enviar el objeto retardado al segundo componente o retardar adicionalmente el objeto retardado.
En una realización del invento, los objetos solicitados se despachan al segundo componente a través de una pluralidad de conexiones al segundo componente.
En una realización del invento, las conexiones seleccionadas de entre las conexiones al segundo componente se suspenden dependiendo de las prioridades de los objetos solicitados que se recibieron del primer componente y que se vayan a despachar a través de las seleccionadas de entre las conexiones.
En una realización del invento, hay para cada conexión una participación específica de posibilidades de tratamiento asignadas dinámicamente.
Una realización del invento comprende las etapas de: enviar una solicitud de código al primero o a un tercer componente; recibir del primero o del tercer componente el código solicitado; analizar el código recibido con respecto a referencias a objetos; y establecer las referencias a objetos con el fin de asignar prioridades iniciales a los objetos a los que se haya hecho referencia en el código recibido.
En una realización del invento, se evalúa una respuesta tras la recepción de la respuesta que contiene el objeto solicitado del primer componente. La respuesta se evalúa con respecto a la prioridad del objeto recibido con el fin de determinar si hay que actualizar - o no - la prioridad inicial del objeto recibido.
En una realización del invento, se genera una lista de prioridades que contiene información de prioridad para objetos individuales o clases individuales de objetos.
En una realización del invento, se establece repetidamente una lista de prioridades con respecto a como mínimo una de las operaciones de actualizar la información de prioridad y eliminar objetos o clases, o la información correspondiente, de la lista de prioridades.
En una realización del invento, las etapas se realizan mediante un componente proxy situado en el primer componente, en el segundo componente o configurado como un componente separado de hardware de la red de comunicaciones.
Una realización del invento se refiere al retardo, en una red de comunicaciones, de una transferencia de objeto desde un primer componente a través de un componente intermediario a un segundo componente que está distante del primer componente, en donde la transferencia de objeto se basa en una pluralidad de solicitudes de objeto relativas a objetos a los que se ha hecho referencia en uno o más códigos que se van a procesar por el segundo u otro componente de la red de comunicaciones. El componente intermediario realiza las etapas de: asignar un atributo específico a un objeto que se va a retardar; informar al segundo componente sobre el atributo; recibir del segundo componente una referencia al atributo; y, tras la recepción de la referencia al atributo, enviar el objeto retardado al que se ha asignado el atributo al segundo componente o retardar adicionalmente el objeto retardado.
En una realización del invento, el objeto se envía al segundo componente de acuerdo con un plan de impulsión o en respuesta a una solicitud de objeto recibida del segundo componente.
En una realización del invento, se informa al segundo componente sobre el atributo en contexto con una instrucción para repetir la solicitud de objeto. La referencia al atributo se recibe del segundo componente en contexto con una solicitud repetida de objeto.
Una realización del invento se refiere a un producto de programa de ordenador que comprende unas partes de código de programa para realizar las etapas de las realizaciones anteriormente descrita, cuando el producto de programa de ordenador se ejecute en un sistema de ordenador.
En una realización del invento, el producto de programa de ordenador se guarda en un medio de memoria que pueda leerse con ordenador.
Una realización del invento se refiere a un componente intermediario para controlar, en una red de comunicaciones, una transferencia de objeto desde un primer componente, a través del componente intermediario, hasta un segundo componente que está distante del primer componente, en la que la transferencia de objeto se basa en una pluralidad de solicitudes de objeto relacionadas con objetos a los que se hace referencia en uno o más códigos para tratarse mediante el segundo u otro componente de la red de comunicaciones. El componente intermediario comprende una interfaz de comunicación para enviar una solicitud de objeto al primer componente y para recibir del primer componente el objeto solicitado, una unidad de tratamiento para establecer y/o actualizar una prioridad del objeto solicitado, en donde se ha asignado una prioridad inicial al objeto solicitado basándose en un análisis de al menos uno de entre la solicitud de objeto y el código que se refiere al objeto solicitado, y en la que la unidad de tratamiento, dependiendo de la prioridad del objeto solicitado, retarda el objeto solicitado o controla la interfaz de comunicación para despachar el objeto solicitado al segundo componente.
Una realización del invento se refiere a un componente intermediario para retardar, en una red de comunicaciones, una transferencia de objeto desde un primer componente, a través del componente intermediario, a un segundo componente que está distante del primer componente, en la que la transferencia de objeto se basa en una pluralidad de solicitudes de objeto relacionadas con objetos a los que se hace referencia en uno o más códigos a tratarse por el segundo u otro componente de la red de comunicaciones. El componente intermediario comprende una unidad de tratamiento para asignar un atributo específico a un objeto que se va a retardar y una interfaz de comunicaciones para informar al segundo componente sobre el atributo, para recibir del segundo componente una referencia al atributo y, tras la recepción de la referencia al atributo, enviar el objeto retardado al que se ha asignado el atributo al segundo componente o retardar adicionalmente el objeto retardado.
Una realización del invento se refiere a un componente intermediario según se ha descrito en las dos secciones anteriores, configurado como un servidor proxy.
Una realización del invento se refiere a un sistema de red que comprende como mínimo uno de los componentes descritos en las tres secciones anteriores.
En una realización, el sistema de red comprende un primer vínculo entre el componente intermediario y el primer componente y un segundo vínculo entre el componente intermediario y el segundo componente El primer vínculo y el segundo vínculo tienen diferentes tasas de transferencia.
En una realización, el sistema de red comprende un segundo componente en la forma de un terminal móvil.
Son posibles diversas modificaciones de la realización preferida sin apartarse del alcance del presente invento. Aunque se ha descrito el invento en relación con una realización preferida, se entenderá que esta descripción no tiene carácter limitativo al mismo. Más bien, el invento está destinado a cubrir todas las modificaciones y/o adiciones a la descripción anteriormente mencionada, sin apartarse del alcance del invento.

Claims (25)

1. Un método de operar un servidor proxy, en el que se asigna o ajusta una prioridad de un objeto a enviarse a un cliente, cuando se encuentre una referencia a dicho objeto en un objeto previo que se va a despachar al cliente.
2. Un método de acuerdo con la reivindicación 1, en el que el objeto previo comprende código de HTML.
3. Un método de acuerdo con la reivindicación 1 o con la reivindicación 2, que comprende la etapa de generar una lista de prioridades en la que se da una relación de objetos individuales, a los que se hace referencia en el objeto previo, de acuerdo con su prioridad.
4. Un método de acuerdo con las reivindicaciones 1, 2 ó 3, en el que la prioridad del objeto se determina dependiendo del orden siguiente de prioridad decreciente de un tipo de objeto: un vínculo a otra página, un tramo de datos, una imagen en línea, una hoja de estilo, la misma prioridad para una secuencia de comandos o un objeto empotrado o un subprograma, menor prioridad para una imagen de fondo, mínima prioridad para un objeto que ya se envió al cliente.
5. Un método de acuerdo con cualquiera de las reivindicaciones precedentes, en el que la prioridad del objeto a enviar a un cliente se asigna o ajusta, cuando se recibe una solicitud, que es emitida por un explorador que funciona en el cliente, relacionada con dicho objeto.
6. Un método de acuerdo con la reivindicación 5, en el que la solicitud es una solicitud de HTTP.
7. Un método de acuerdo con la reivindicación 6, que comprende la etapa de analizar la solicitud en un contexto de URL.
8. Un método de acuerdo con las reivindicaciones 6 ó 7, en el que la prioridad se ajusta o asigna dependiendo de información en el encabezamiento de la solicitud de HTTP.
9. Un método de acuerdo con cualquiera de las reivindicaciones 5 a 8, que comprende las etapas de determinar si el objeto ha sido - o no- solicitado ya una vez por el explorador, en el que el objeto obtiene una alta prioridad asignada si el explorador ya ha solicitado el objeto.
10. Un método de acuerdo con cualquiera de las reivindicaciones 5 a 9, en el que el objeto obtiene una prioridad alta asignada si el objeto no tiene todavía una prioridad y la extensión de archivo indica uno de entre un archivo de HTML, un archivo de XML o un índice de directorio.
11. Un método de acuerdo con cualquiera de las reivindicaciones 5 a 10, en el que la prioridad, que se asigna o ajusta en respuesta a la solicitud recibida, depende de si la solicitud es una solicitud condicional de HTTP.
12. Un método de acuerdo con cualquiera de las reivindicaciones 5 a 11, en el que la prioridad, cuando se asigna o ajusta en respuesta a la solicitud recibida, es menor que para la mayoría de otros objetos solicitados, si el objeto se solicitó indirectamente mediante una secuencia de comandos.
13. Un método de acuerdo con cualquiera de las reivindicaciones precedentes, en el que la prioridad del objeto a enviar a un cliente se asigna o ajusta, cuando se reciba una respuesta correspondiente a una solicitud del objeto, en donde dicha respuesta contiene el objeto.
14. Un método de acuerdo con la reivindicación 13, en el que la respuesta es una respuesta de HTTP.
15. Un método de acuerdo con la reivindicación 14, en el que se establece un encabezamiento o un contenido de la respuesta de HTTP para ajustar la prioridad.
16. Un método de acuerdo con las reivindicaciones 14 ó 15, en el que se establece un código de réplica para ajustar la prioridad, y en el que se asigna una prioridad mayor si el establecimiento del código de réplica indica un código de error que si el establecimiento del código de réplica indica una réplica normal.
17. Un método de acuerdo con las reivindicaciones 14, 15 ó 16, en el que se establece un tipo de contenido para ajustar la prioridad, y en el que se asigna una prioridad mayor si el establecimiento de tipo de contenido indica un código HTML que si el establecimiento del código de réplica indica una imagen.
18. Un método de acuerdo con cualquiera de las reivindicaciones 14 a 17, en el que se establece un tamaño del objeto, y en el que un objeto de menor tamaño obtiene una prioridad mayor que un objeto de mayor tamaño.
19. Un método de acuerdo con cualquiera de las reivindicaciones 14 a 18, en el que se analiza un contenido del objeto para ajustar la prioridad.
20. Un método de acuerdo con la reivindicación 19, en el que una imagen animada obtiene una prioridad menor que una imagen estática.
21. Un método de acuerdo con cualquiera de las reivindicaciones 14 a 20, en el que, si un código de respuesta es una redirección que especifica una nueva ubicación para el objeto solicitado, dicha nueva ubicación obtiene la misma prioridad que el objeto original.
22. Un método de acuerdo con cualquiera de las reivindicaciones precedentes, en el que la prioridad de todos los objetos se disminuye después de una magnitud especificada de tiempo o después que se han procesado varias solicitudes de HTTP o respuestas de HTTP.
23. Un servidor proxy, que tiene medios destinados a realizar el método de acuerdo con las reivindicaciones 1 a 22.
24. Un programa de ordenador que comprende unas partes de código de programa para realizar las etapas de las reivindicaciones 1 a 22 cuando el programa de ordenador se ejecuta en un sistema (30) de ordenador.
25. Un medio de memoria legible por ordenador, que guarda un programa de ordenador de la reivindicación 24.
ES06000930T 2002-04-05 2002-04-05 Prioridades de transferencia de objeto en una red de comunicaciones. Expired - Lifetime ES2317348T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2002/003802 WO2003085924A1 (en) 2002-04-05 2002-04-05 Object transfer control in a communications network

Publications (1)

Publication Number Publication Date
ES2317348T3 true ES2317348T3 (es) 2009-04-16

Family

ID=28685820

Family Applications (2)

Application Number Title Priority Date Filing Date
ES02727530T Expired - Lifetime ES2257543T3 (es) 2002-04-05 2002-04-05 Control de transferencia de objeto en una red de comunicaciones.
ES06000930T Expired - Lifetime ES2317348T3 (es) 2002-04-05 2002-04-05 Prioridades de transferencia de objeto en una red de comunicaciones.

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES02727530T Expired - Lifetime ES2257543T3 (es) 2002-04-05 2002-04-05 Control de transferencia de objeto en una red de comunicaciones.

Country Status (10)

Country Link
US (2) US7721294B2 (es)
EP (2) EP1650931B1 (es)
CN (1) CN100531186C (es)
AT (2) ATE413763T1 (es)
AU (1) AU2002257754A1 (es)
DE (2) DE60229796D1 (es)
ES (2) ES2257543T3 (es)
IL (3) IL163889A0 (es)
PT (2) PT1493257E (es)
WO (1) WO2003085924A1 (es)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305700B2 (en) 2002-01-08 2007-12-04 Seven Networks, Inc. Secure transport for mobile communication network
US20040158582A1 (en) * 2003-02-11 2004-08-12 Shuichi Takagi Method and apparatus for synchronously transferring data from a local storage medium to a remote storage medium, and method and system for managing transfer of data from a source storage medium to a repository storage medium
US9357033B2 (en) 2003-06-17 2016-05-31 Citrix Systems, Inc. Method and system for dynamic interleaving
TWI234717B (en) * 2003-12-04 2005-06-21 Inst Information Industry Method and system for dynamically determining web resource to be loaded and saving space
US7673018B2 (en) 2004-04-08 2010-03-02 Research In Motion Limited Message send queue reordering based on priority
EP1585282B1 (en) * 2004-04-08 2006-07-26 Research In Motion Limited Message send queue reordering based on priority
US7865511B2 (en) * 2004-06-25 2011-01-04 Apple Inc. News feed browser
US8023408B2 (en) * 2004-11-19 2011-09-20 International Business Machines Corporation Dynamically changing message priority or message sequence number
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
US8583827B2 (en) * 2005-05-26 2013-11-12 Citrix Systems, Inc. Dynamic data optimization in data network
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9692725B2 (en) * 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US8612844B1 (en) * 2005-09-09 2013-12-17 Apple Inc. Sniffing hypertext content to determine type
US8533350B2 (en) * 2005-11-01 2013-09-10 Ravenwhite Inc. Method and apparatus for storing information in a browser storage area of a client device
EP1796338A1 (de) * 2005-12-07 2007-06-13 Siemens Aktiengesellschaft Verfahren zur Kommunikation eines Clients mit einem Server sowie Client und Server zur Durchführung dieses Verfahrens
WO2007130038A1 (en) * 2006-05-05 2007-11-15 Thomson Licensing Threshold-based normalized rate earliest delivery first (nredf) for delayed downloading services
US20100005178A1 (en) * 2006-10-24 2010-01-07 Catalin Sindelaru Method and system for firewall friendly real-time communication
US9489456B1 (en) * 2006-11-17 2016-11-08 Blue Coat Systems, Inc. Previewing file information over a network
US7743160B2 (en) * 2007-03-29 2010-06-22 Blue Coat Systems, Inc. System and method of delaying connection acceptance to support connection request processing at layer-7
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8521891B1 (en) * 2007-06-21 2013-08-27 Mcafee, Inc. Network browser system, method, and computer program product for conditionally loading a portion of data from a network based on a data transfer rate
KR100925644B1 (ko) 2007-10-22 2009-11-06 에스케이 텔레콤주식회사 오브젝트 전송 시스템 및 그 제어방법
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
US8850029B2 (en) * 2008-02-14 2014-09-30 Mcafee, Inc. System, method, and computer program product for managing at least one aspect of a connection based on application behavior
US9262357B2 (en) 2008-09-29 2016-02-16 International Business Machines Corporation Associating process priority with I/O queuing
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
JP5669460B2 (ja) * 2010-06-30 2015-02-12 キヤノン株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法及びプログラム
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
US9043433B2 (en) * 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
WO2012024030A2 (en) 2010-07-26 2012-02-23 Seven Networks, Inc. Context aware traffic management for resource conservation in a wireless network
CN103229167A (zh) 2010-10-06 2013-07-31 星汇数据解决方案公司 用于为电子发现数据编索引的系统和方法
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US8984164B2 (en) * 2010-11-09 2015-03-17 Usablenet Inc. Methods for reducing latency in network connections and systems thereof
US8868638B2 (en) 2010-11-09 2014-10-21 Usablenet Inc. Methods for reducing latency in network connections using automatic redirects and systems thereof
CN103404193B (zh) 2010-11-22 2018-06-05 七网络有限责任公司 调校数据传输以优化为通过无线网络的传输建立的连接
US8769000B2 (en) * 2011-02-01 2014-07-01 Microsoft Corporation Adaptive network communication techniques
US9009253B2 (en) * 2011-02-16 2015-04-14 Yahoo! Inc. Optimizing server resources using multiple retry for high traffic websites
EP2684318B1 (en) * 2011-03-11 2019-12-11 Citrix Systems Inc. SYSTEMS AND METHODS OF QoS FOR SINGLE STREAM ICA
EP2621144B1 (en) 2011-04-27 2014-06-25 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
US20130104025A1 (en) * 2011-10-20 2013-04-25 Microsoft Corporation Enabling immersive search engine home pages
US9207754B2 (en) 2011-10-20 2015-12-08 Microsoft Technology Licensing, Llc Enabling immersive, interactive desktop image presentation
WO2013078687A1 (zh) * 2011-12-02 2013-06-06 华为技术有限公司 一种内容分发网络路由方法、系统和用户终端
US8918503B2 (en) 2011-12-06 2014-12-23 Seven Networks, Inc. Optimization of mobile traffic directed to private networks and operator configurability thereof
WO2013086214A1 (en) 2011-12-06 2013-06-13 Seven Networks, Inc. A system of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
EP2788889A4 (en) 2011-12-07 2015-08-12 Seven Networks Inc FLEXIBLE AND DYNAMIC INTEGRATION SCHEMES OF A TRAFFIC MANAGEMENT SYSTEM WITH VARIOUS NETWORK OPERATORS TO REDUCE NETWORK TRAFFIC
US9537899B2 (en) 2012-02-29 2017-01-03 Microsoft Technology Licensing, Llc Dynamic selection of security protocol
US9215127B2 (en) * 2012-03-12 2015-12-15 Network Coding, Inc. Non-intrusive proxy system and method for applications without proxy support
US8719426B1 (en) * 2012-03-23 2014-05-06 Google Inc. Efficient proximity detection
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US8923204B2 (en) * 2012-05-29 2014-12-30 Alcatel Lucent Message handling extension using context artifacts
US9037926B2 (en) * 2012-06-07 2015-05-19 International Business Machines Corporation Background buffering of content updates
WO2014011216A1 (en) 2012-07-13 2014-01-16 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
JP6021487B2 (ja) 2012-07-18 2016-11-09 キヤノン株式会社 情報処理システム、制御方法、サーバ、情報処理装置およびコンピュータプログラム
US9148383B2 (en) * 2012-07-31 2015-09-29 International Business Machines Corporation Transparent middlebox with graceful connection entry and exit
US9311280B2 (en) * 2012-08-27 2016-04-12 Qualcomm Innovation Center, Inc. Re-ordering of iFrame execution to reduce network activity window
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US9471533B1 (en) * 2013-03-06 2016-10-18 Amazon Technologies, Inc. Defenses against use of tainted cache
US9398066B1 (en) 2013-03-06 2016-07-19 Amazon Technologies, Inc. Server defenses against use of tainted cache
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
WO2015052354A1 (es) * 2013-10-07 2015-04-16 Telefonica Digital España, S.L.U. Procedimiento y sistema para definir el orden de obtención de recursos web por un navegador web
US9992263B2 (en) * 2014-10-10 2018-06-05 Pulse Secure, Llc Predictive prioritized server push of resources
CN106330845A (zh) * 2015-07-02 2017-01-11 中兴通讯股份有限公司 一种传输流媒体数据的方法和装置
US20180063220A1 (en) * 2016-08-30 2018-03-01 Citrix Systems, Inc. Systems and methods to provide hypertext transfer protocol 2.0 optimization through multiple links
EP3772207B1 (en) * 2019-08-01 2024-03-20 ISS IP Holding LLC Method and system for data transmission with significantly reduced latency losses

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5046121A (en) * 1989-01-31 1991-09-03 Konica Corporation Image data compression apparatus
US6512791B1 (en) * 1991-05-15 2003-01-28 Canon Kabushiki Kaisha Image processing apparatus having means for controlling exposure using an orthogonal transformation coefficient
WO1997023993A2 (en) * 1995-12-21 1997-07-03 Philips Electronics N.V. Noise reduction in an image
US5778372A (en) * 1996-04-18 1998-07-07 Microsoft Corporation Remote retrieval and display management of electronic document with incorporated images
US5826031A (en) * 1996-06-10 1998-10-20 Sun Microsystems, Inc. Method and system for prioritized downloading of embedded web objects
US5675721A (en) * 1996-08-08 1997-10-07 Freedman; Aaron S. Computer network data distribution and selective retrieval system
US6421733B1 (en) * 1997-03-25 2002-07-16 Intel Corporation System for dynamically transcoding data transmitted between computers
US6343085B1 (en) * 1997-08-28 2002-01-29 Microsoft Corporation Adaptive bandwidth throttling for individual virtual services supported on a network server
US6085193A (en) * 1997-09-29 2000-07-04 International Business Machines Corporation Method and system for dynamically prefetching information via a server hierarchy
US6266742B1 (en) 1997-10-27 2001-07-24 International Business Machines Corporation Algorithm for cache replacement
US5987466A (en) 1997-11-25 1999-11-16 International Business Machines Corporation Presenting web pages with discrete, browser-controlled complexity levels
US6769019B2 (en) * 1997-12-10 2004-07-27 Xavier Ferguson Method of background downloading of information from a computer network
US6154769A (en) * 1998-03-27 2000-11-28 Hewlett-Packard Company Scheduling server requests to decrease response time and increase server throughput
JPH11284683A (ja) * 1998-03-30 1999-10-15 Canon Inc データ転送装置とデータの転送方法、及び情報処理システム
US6144996A (en) 1998-05-13 2000-11-07 Compaq Computer Corporation Method and apparatus for providing a guaranteed minimum level of performance for content delivery over a network
US6563517B1 (en) 1998-10-02 2003-05-13 International Business Machines Corp. Automatic data quality adjustment to reduce response time in browsing
US6658485B1 (en) * 1998-10-19 2003-12-02 International Business Machines Corporation Dynamic priority-based scheduling in a message queuing system
US6389462B1 (en) 1998-12-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for transparently directing requests for web objects to proxy caches
US6763371B1 (en) * 1999-05-10 2004-07-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for collaborative communication in a communication network
US7340499B1 (en) * 1999-12-03 2008-03-04 Sun Microsystems, Inc. Dynamic embedding of literal object data in supplied instance of information object
US20020073167A1 (en) * 1999-12-08 2002-06-13 Powell Kyle E. Internet content delivery acceleration system employing a hybrid content selection scheme
DE19964030A1 (de) * 1999-12-30 2001-07-05 Ibm Effizientes Laden von Dokumenten auf dem Internet
US7552233B2 (en) * 2000-03-16 2009-06-23 Adara Networks, Inc. System and method for information object routing in computer networks
US6925484B2 (en) * 2000-03-29 2005-08-02 Matsushita Electric Industrial Co., Ltd. Dynamic proxy server apparatus
US6954429B2 (en) * 2000-04-05 2005-10-11 Dyband Corporation Bandwidth control system
WO2001090912A1 (en) * 2000-05-25 2001-11-29 Qmgn, Inc. Enhanced downloading from a computer network and profiling of a user of a computer network
WO2002007395A1 (fr) * 2000-07-19 2002-01-24 Hitachi, Ltd. Systeme de transfert preferentiel d'informations sur le web
DE10049619A1 (de) * 2000-10-05 2002-04-18 Alcatel Sa Verfahren zur Erbringung von Diensten in einem Netzwerk-Management-System mit einer offenen Systemarchitektur sowie Dienst-Objekt, Anforderungs-Objekt und Anforderungs-Manager hierzu

Also Published As

Publication number Publication date
AU2002257754A1 (en) 2003-10-20
CN100531186C (zh) 2009-08-19
ATE413763T1 (de) 2008-11-15
PT1493257E (pt) 2006-06-30
ATE316312T1 (de) 2006-02-15
EP1650931B1 (en) 2008-11-05
CN1625877A (zh) 2005-06-08
DE60208786D1 (de) 2006-04-06
IL163889A0 (en) 2005-12-18
EP1493257B1 (en) 2006-01-18
ES2257543T3 (es) 2006-08-01
DE60208786T2 (de) 2006-09-28
US7721294B2 (en) 2010-05-18
IL163889A (en) 2010-02-17
IL189779A (en) 2010-05-17
EP1650931A1 (en) 2006-04-26
US20090077205A1 (en) 2009-03-19
EP1493257A1 (en) 2005-01-05
PT1650931E (pt) 2009-02-13
WO2003085924A1 (en) 2003-10-16
US20050240940A1 (en) 2005-10-27
IL189779A0 (en) 2008-08-07
DE60229796D1 (de) 2008-12-18

Similar Documents

Publication Publication Date Title
ES2317348T3 (es) Prioridades de transferencia de objeto en una red de comunicaciones.
US7769823B2 (en) Method and system for distributing requests for content
US10075501B2 (en) Method and device for processing web requests
US20060277277A1 (en) Method of automatically caching WAP web pages and a mobile communications device for the same
US9432877B2 (en) Information sharing system, communication apparatus, control method and computer program
JP2000148572A (ja) ネットワ―クが利用不可能である間の動作を改善した無線移動装置及びその送信方法
ES2235662B2 (es) Metodo para una interconexion mejorada de una aplicacion de usuario y un servidor.
US9509450B2 (en) Snoop virtual receiver time
CA2816338A1 (en) Methods for reducing latency in network connections using automatic redirects and systems thereof
US7000027B2 (en) System and method for knowledgeable node initiated TCP splicing
US20220121725A1 (en) Prefetching using a chain of fetch operations
WO2000043919A1 (en) Link presentation and data transfer
ES2270292T3 (es) Reordenacion de una cola de envio de mensajes en base a la prioridad.
CA2487822A1 (en) Methods and system for using caches
WO2006038772A2 (en) A terminal apparatus for wireless connection and a wireless connection administration method using the same
ITMI20001202A1 (it) Metodo e dispositivo per tradurre indirizzi ip di reti per telecomunicazioni usando una memoria con oblio controllato.
CN108429779A (zh) 一种基于移动端的应用系统的下载方法及系统
ES2291853T3 (es) Gestion de direcciones en entornos basados en ip movil (mobile ip).
JP2005150951A (ja) 受信装置、通信システム及びプログラム
WO2003084136A1 (en) Selectively routing data through a path based on connectivity conditions and parameters
JP4664026B2 (ja) コンピュータシステム、データ転送装置、及びデータ転送方法
US7324538B2 (en) High-throughput state management for TCP
CN109716315A (zh) 使用报头修改的预取高速缓存管理
GB2412770A (en) Method of communicating data over a network