2010-04-03 16 views
5

Estoy usando el método PassthruAPP para engancharme a las solicitudes HTTP/HTTPS realizadas por IE.Enlazando el protocolo http/https en IE hace que las solicitudes GET sean secuenciales

Funciona bien en su mayor parte, sin embargo, noté un problema. Solo un hilo de descarga está activo a la vez, normalmente IE usa dos hilos de descarga. Puedo ver que se crean dos objetos de IInternetProtocol, pero IE usa solo uno a la vez.

Esto está sucediendo con IE7, todavía no lo he probado con otras versiones.

El problema parece ser que IE vuelve a descargar elementos de uno en uno cuando se llama a IInternetSession::RegisterNameSpace para cualquiera de sus controladores predeterminados. El código siguiente ocasiona que HTTP descargas sean secuenciales aunque estoy registrando un controlador HTTPS. Registrarse para 'file: //' causa el mismo problema.

CComPtr<IInternetSession> spSession; 
CoInternetGetSession(0, &spSession, 0); 

MetaFactory::CreateInstance(CLSID_HttpSProtocol, &m_spCFHTTPS); 
spSession->RegisterNameSpace(m_spCFHTTPS, CLSID_NULL, L"https", 0, 0, 0) 

Esto siempre sucede durante los primeros elementos de la página, pero parece que después de la emisión del documento completo, descargas simultáneas pueden ocurrir de nuevo. Por ejemplo, el código Javascript que se ejecuta después de que la página ha terminado de cargarse puede cargar imágenes al mismo tiempo.

+0

Dicho sea de paso, este problema es peor en IE8 +, donde el límite de conexión predeterminado es mayor. – EricLaw

+0

Acabo de probarlo, obtengo dos subprocesos de descarga activos al mismo tiempo con IE8, en lugar del predeterminado 6 cuando no se define un controlador de protocolo personalizado. – watsonmw

+0

@EricLaw ¿Ha sido esto "reparado" en IE9,10 y por supuesto 11? O tenemos que enganchar la COM VTable .. –

Respuesta

2

Sí, esto se conoce, por diseño, y documentado en varios lugares. (Esto se hace porque no podemos hacer suposiciones sobre la seguridad del hilo de los manejadores de protocolo)

Esta es una de MUCHAS razones por las que se sugiere que no intente ajustar los protocolos HTTP/HTTPS.

+0

menciona la adición de un controlador de protocolo personalizado para HTTP/HTTPS incurre en una penalización de rendimiento durante la navegación: http://msdn.microsoft.com/en-us/library/aa767759(VS.85).aspx Son Hay otras penalizaciones de rendimiento al lado del único hilo de descarga activo? – watsonmw

+0

Los enlaces a los lugares donde esto está documentado serían útiles para otras personas que lleguen a esta pregunta. – watsonmw

+0

Entonces, ¿cómo se deben interceptar las solicitudes de IE si no se envuelven los protocolos HTTP (S)? No hay técnicas documentadas para este tipo de tarea. – ReVolly

Cuestiones relacionadas