2015-09-15 16 views
14

Questo potrebbe solo mettere in luce alcuni dei miei equivoci, ma ero curioso:Le attuali implementazioni XHR sfruttano HTTP/2?

Se si utilizzava un server HTTP/2 e si desiderava effettuare richieste XHR nel browser al server, XHR automaticamente sfruttava le prestazioni ottimizzazioni nelle intestazioni e in modo tale da fornire?

Oppure ignorerebbe tale funzionalità e funzionerà come una richiesta HTTP? In tal caso, quali sono le cose che possiamo fare per utilizzare le nuove ottimizzazioni nelle nostre richieste?

+1

ajax opera su un'interfaccia http 1.1, almeno per ora. alcune ottimizzazioni perf sarebbero trasparenti (compressione intestazione), alcune non si applicano (più risorse). – dandavis

+0

@dandavis Non sono sicuro di averti capito correttamente. Di quale browser stai parlando? – dsign

+1

@dsign: tutti loro; xmlHttpRequest livello 2 è uscito prima di http2, quindi non ci sono (afaik) nuovi metodi o funzionalità per l'interfaccia ajax (basato su http1.1), anche se i livelli di supporto utilizzano http2. al punto della domanda: il browser sfrutta l'http2, ma il codice JS non consente al codificatore di trarre ulteriori vantaggi rispetto a http1 ... – dandavis

risposta

15

Non è necessario fare nulla. Se il server supporta HTTP/2, XHR lo utilizzerà. La compressione dell'intestazione e tale si avvia automaticamente.

prova è:

  • Aprire un sito Web HTTP/2 in Chrome. Puoi usare il nostro, to also checkout some cool stuff regarding HTTP/2 PUSH, AngularJS and RequireJS.
  • Aprire il pannello Devtools (F12), quindi il pannello di rete, quindi fare clic su XHR. Fai clic con il tasto destro sulla riga delle intestazioni e assicurati di avere la colonna "Protocollo" abilitata.
  • Si dovrebbe vedere "h2" in detta colonna (nel nostro caso, AngularJS sta caricando un modello incluso tramite XHR).
  • Mentre ci si trova, si noti che il server ha inviato la richiesta XHR. I segni rivelatori di risposte spinte sono "intestazioni provvisorie" invece di intestazioni di richiesta e tempi di "download" e "attesa" anormalmente piccoli. Aggiungiamo persino un'ulteriore intestazione alla risposta (x-shimmmercat-note: pushed-stream). Il browser ha adottato questa richiesta, pertanto le richieste XHR non solo useranno HTTP/2 se disponibili, ma in alcuni casi potranno utilizzare le risorse spinte.
+0

pulito, ma dove sarebbe una risorsa spinta uscire da una richiesta Ajax? – dandavis

+0

c'è qualcosa oltre al pre-caching? o credo che quello che chiedo sia se cambia la vista da ajax (la risposta, lo stato, le intestazioni, ecc.), o se tutta quella roba agisce come prima. da quello che posso dire, l'interazione ajax api è la stessa di una volta, è anche la tua comprensione? – dandavis

+0

@dandavis Sì, penso che tu abbia ragione. La richiesta Ajax avrebbe persino avuto difficoltà a capire che la risorsa era stata spinta. Ma lascia che te lo dica, la spinta HTTP/2 è troppo nuova (non proprio, ma sta iniziando lentamente a decollare) anche rimuovendo XHR dall'equazione. – dsign

Problemi correlati