Ich verwende die PassthruAPP-Methode, um HTTP/HTTPS-Anforderungen von IE zu verknüpfen.Das Anhängen des http/https-Protokolls im IE bewirkt, dass GET-Anforderungen sequenziell sind.
Es funktioniert in den meisten Fällen gut, aber ich habe ein Problem festgestellt. Es ist immer nur ein Download-Thread aktiv, normalerweise verwendet IE zwei Download-Threads. Ich kann sehen, dass zwei IInternetProtocol-Objekte erstellt werden, IE jedoch nur jeweils einen.
Dies ist mit IE7 passiert, habe ich noch nicht mit anderen Versionen versucht.
Das Problem scheint zu sein, dass IE zum Herunterladen von Elementen nacheinander zurückgreift, wenn IInternetSession::RegisterNameSpace
für eines seiner Standardhandler aufgerufen wird. Der folgende Code verursacht HTTP Downloads, um sequenziell zu sein, obwohl ich einen HTTPS Handler registriere. Die Registrierung für 'file: //' verursacht das gleiche Problem.
CComPtr<IInternetSession> spSession;
CoInternetGetSession(0, &spSession, 0);
MetaFactory::CreateInstance(CLSID_HttpSProtocol, &m_spCFHTTPS);
spSession->RegisterNameSpace(m_spCFHTTPS, CLSID_NULL, L"https", 0, 0, 0)
Dies geschieht immer in den ersten paar Elemente auf der Seite, aber es scheint, dass, nachdem das Dokument vollständig ausgegeben wird, simultane Downloads wieder auftreten können. Zum Beispiel kann Javascript-Code, der ausgeführt wird, nachdem die Seite geladen wurde, Bilder gleichzeitig gut laden.
Übrigens ist dieses Problem in IE8 +, wo das Standardverbindungslimit höher ist, schlimmer. – EricLaw
Nur getestet, ich bekomme zwei Download-Threads zu jeder Zeit mit IE8 statt der Standard 6, wenn keine benutzerdefinierten Protokoll-Handler definiert ist. – watsonmw
@EricLaw Wurde das in IE9,10 und natürlich 11 "behoben"? Oder müssen wir die COM VTable haken .. –