2010-04-21 16 views
20

Por lo que entiendo, es una buena práctica reutilizar objetos XmlHttpRequest siempre que sea posible. Desafortunadamente, estoy teniendo dificultades para entender por qué. Parece que al tratar de reutilizar objetos XHR aumenta la complejidad de su código e introduce posibles browser incompatibilities. Entonces, ¿por qué tanta gente lo recomienda?¿Por qué debería reutilizar objetos XmlHttpRequest?

Después de algunas investigaciones, fue capaz de llegar a esta lista de posibles explicaciones:

  1. menos objetos creados significa menos recolección de basura
  2. La reutilización de objetos XHR reduce la posibilidad de pérdidas de memoria
  3. El sobrecarga de crear un nuevo objeto XHR es alto
  4. El navegador es capaz de realizar algún tipo de optimización de red bajo el capó

Pero todavía soy un poco escéptico. ¿Alguna de estas razones es realmente válida? Si no, ¿cuál es una razón válida?

+3

http://stackoverflow.com/questions/11502244/reuse-xmlhttprequest-object-or-create-a-new-one parece estar en desacuerdo. Ver también http://stackoverflow.com/questions/11079543/ajax-intensive-page-reuse-the-same-xmlhttprequest-object-or-create-new-one-ever – nafg

Respuesta

12

Hay una gran cantidad de problemas relacionados con la cantidad de conexiones abiertas que puede tener en un momento dado; a menudo esto se impone a nivel de navegador como en todas las versiones de Internet Explorer (IE6 permite 2, IE7 permite 2, IE8 permite 4), a menudo esto es impuesto por el límite del servidor y, a veces, esto es impuesto por los proveedores de servicios de Internet.

Si tiene una gran cantidad de objetos XmlHttpRequest distintos en una secuencia de comandos, y por alguna razón algunas de sus conexiones no se han cerrado correctamente o no se han GC'd, puede tener dificultades para abrir nuevas conexiones y no tener absolutamente ningún idea de lo que está mal.

Eso y todos los motivos que menciona.

Cuestiones relacionadas