2014-12-14 6 views
5

Ich habe nach Möglichkeiten gesucht, die Push-Funktionen von HTTP/2 zu verwenden, um die Anzahl der ausgegebenen GET-Anfragen und die durchschnittliche wahrgenommene Verzögerung bei bestimmten Client-Server-Implementierungen zu reduzieren. Der vorhandene Client ist stark auf die Verwendung von curl angewiesen, um GET-Anforderungen auszugeben, und ich muss in der Lage sein, die aktuelle Implementierung wiederzuverwenden. Aktuelle Versionen von curl bieten Unterstützung für HTTP/2, basierend auf dem zugrunde liegenden nghttp2-Modul. Unter Verwendung der vorhandenen nghttp2 Server:Wie verwendet man HTTP/2 Push-Funktionen mit Curl?

nghttpd -d /var/www/html/ 3000 local.key local.crt 

beide nghttp und kräuseln können verwendet werden, um ein Beispiel Textdatei Inhalt zu erhalten:

nghttp https://localhost:3000/text.txt 
This is some sample text. 

curl https://localhost:3000/text.txt -k --http2 
This is some sample text. 

nghttp2 die Verwendung von Feature drängen jedoch, wo eine andere Textdatei zusammen gedrückt wird:

nghttpd -d /var/www/html/ -p/text.txt=/text2.txt 3000 local.key local.crt 

curl scheint nicht in der Lage mit der gedrückten Ressource umzugehen:

nghttp https://localhost:3000/bbb/text.txt 
This is some sample text. 
This is some sample text as well. 

curl https://localhost:3000/text.txt -k --http2 -v 
... 
* nghttp2_session_mem_recv() returns 268 
* before_frame_send() was called 
* on_frame_send() was called 
* on_stream_close() was called, error_code = 1 
* before_frame_send() was called 
* on_frame_send() was called 
* on_stream_close() was called, error_code = 1 
* Connection #0 to host localhost left intact 

der Tat auf Server-Seite sind zwei Resets für die beiden geöffneten Ströme erhalten:

[id=1] [331.593] recv RST_STREAM frame <length=4, flags=0x00, stream_id=1> 
     (error_code=PROTOCOL_ERROR(0x01)) 
[id=1] [331.594] recv RST_STREAM frame <length=4, flags=0x00, stream_id=2> 
     (error_code=PROTOCOL_ERROR(0x01)) 
[id=1] [331.594] closed 

Gibt es eine Möglichkeit curl zu verwenden, um mit den HTTP/2 Schieben Funktionen?

Antwort

4

curl (das Befehlszeilentool) unterstützt (noch) nicht HTTP/2-Push.

Sie können nur verwenden, wenn Sie HTTP/2 mit libcurl und nicht das Befehlszeilentool ausführen.