2010-04-21 11 views
20

Da quello che ho capito, è una buona pratica riutilizzare gli oggetti XmlHttpRequest quando possibile. Sfortunatamente, sto avendo difficoltà a capire perché. Sembra che provando a riutilizzare gli oggetti XHR si aumenti la complessità del codice e si possa introdurre browser incompatibilities. Quindi perché così tante persone lo raccomandano?Perché dovrei riutilizzare oggetti XmlHttpRequest?

Dopo alcune ricerche, sono stato in grado di venire con questo elenco di possibili spiegazioni:

  1. meno oggetti creati significa meno garbage collection
  2. Riutilizzo degli oggetti XHR riduce la possibilità di perdite di memoria
  3. Il l'overhead della creazione di un nuovo oggetto XHR è elevato
  4. Il browser è in grado di eseguire una sorta di ottimizzazione della rete sotto cappa

Ma sono ancora un po 'scettico. Qualcuna di queste ragioni è effettivamente valida? In caso negativo, qual è una ragione valida?

+3

http://stackoverflow.com/questions/11502244/reuse-xmlhttprequest-object-or-create-a-new-one sembra in disaccordo. Vedi anche http://stackoverflow.com/questions/11079543/ajax-intensive-page-reuse-the-same-xmlhttprequest-object-or-create-new-one-ever – nafg

risposta

12

Ci sono tutta una serie di problemi relativi al numero di connessioni aperte che è possibile avere in qualsiasi momento; spesso questo viene imposto a livello di browser come in tutte le versioni di Internet Explorer (IE6 consente 2, IE7 consente 2, IE8 consente 4), spesso questo viene imposto dalla limitazione del server e talvolta viene imposto dai provider di servizi Internet.

Se si dispone di un numero elevato di oggetti XmlHttpRequest distinti in uno script e per qualche motivo alcune delle loro connessioni non sono state chiuse correttamente o non sono state eseguite GC, è possibile incontrare difficoltà nell'aprire nuove connessioni e non avere assolutamente idea cosa sta andando male.

Questo e tutti i motivi che hai menzionato.