2010-04-21 31 views
20

Từ những gì tôi hiểu, cách tốt nhất là sử dụng lại các đối tượng XmlHttpRequest bất cứ khi nào có thể. Thật không may, tôi đang có một thời gian khó hiểu tại sao. Dường như bằng cách cố gắng tái sử dụng các đối tượng XHR, bạn tăng độ phức tạp của mã và bạn có thể giới thiệu browser incompatibilities. Vậy tại sao nhiều người lại đề nghị?Tại sao tôi nên sử dụng lại các đối tượng XmlHttpRequest?

Sau khi một số nghiên cứu, tôi đã có thể đưa ra danh sách này lý giải như sau:

  1. Ít đối tượng được tạo có nghĩa là ít thu gom rác thải
  2. Tái sử dụng đối tượng XHR giảm nguy cơ rò rỉ bộ nhớ
  3. Các chi phí tạo đối tượng XHR mới là cao
  4. Trình duyệt có thể thực hiện một số loại tối ưu hóa mạng dưới mui xe

Nhưng tôi vẫn còn chút hoài nghi. Có bất kỳ lý do nào trong số những lý do này thực sự hợp lệ không? Nếu không, lý do hợp lệ là gì?

+3

http://stackoverflow.com/questions/11502244/reuse-xmlhttprequest-object-or-create-a-new-one dường như không đồng ý. Xem thêm http://stackoverflow.com/questions/11079543/ajax-intensive-page-reuse-the-same-xmlhttprequest-object-or-create-new-one-ever – nafg

Trả lời

12

Có một loạt vấn đề liên quan đến số lượng kết nối mở mà bạn có thể có cùng một lúc; thường là điều này được áp đặt ở cấp trình duyệt như trong tất cả các phiên bản của Internet Explorer (IE6 cho phép 2, IE7 cho phép 2, IE8 cho phép 4), thường điều này được điều chỉnh bởi máy chủ điều tiết và đôi khi điều này được áp đặt bởi nhà cung cấp dịch vụ Internet.

Nếu bạn có một số lượng lớn các đối tượng XmlHttpRequest riêng biệt trong một tập lệnh và vì một số lý do kết nối của chúng không đóng đúng hoặc chưa được GC, bạn có thể gặp khó khăn khi mở kết nối mới và hoàn toàn không ý tưởng những gì đang xảy ra.

Điều đó và tất cả các lý do bạn đề cập.

Các vấn đề liên quan