Tôi đang làm việc trên một số loại giao diện người dùng đa biên tập/coop trực tuyến, sẽ thực hiện rất nhiều (như trong, hàng nghìn) yêu cầu ajax trong suốt thời gian tồn tại của một trang.Trang chuyên sâu Ajax: sử dụng lại cùng một đối tượng XMLHttpRequest hoặc tạo một đối tượng mới mỗi lần?
gì sẽ là tốt nhất: (tránh 'tốt nhất' về sự ổn định, tính tương thích, rắc rối)
Tạo một đối tượng XMLHttpRequest và tái sử dụng mà cho mọi yêu cầu HTTP
Tạo một XMLHttpRequest mới đối tượng cho mọi yêu cầu HTTP
Quản lý 'hồ bơi' động của các đối tượng XMLHttpRequest, tạo đối tượng mới khi bắt đầu yêu cầu HTTP và không có đối tượng hiện có nào và gắn thẻ cho một ô được tạo trước đó bject là 'available' khi yêu cầu cuối cùng của nó được hoàn tất thành công
Tôi nghĩ 1 không phải là một tùy chọn, có thể yêu cầu mới, trong khi yêu cầu mới vẫn chưa hoàn thành, v.v.
Đối với 2, tôi đoán đây là rò rỉ bộ nhớ hoặc có thể dẫn đến việc sử dụng bộ nhớ/tài nguyên mất trí. Hoặc tôi có thể bằng cách nào đó đóng hoặc xóa một đối tượng khi yêu cầu của nó được hoàn thành? (ở đâu/như thế nào?) Hoặc bộ thu gom rác JS có thực hiện đúng cách này không?
Không bao giờ thử 3 trước đây nhưng nó cảm thấy như là tốt nhất của cả hai thế giới. Hoặc là một cách tiếp cận như vậy không cần thiết, hoặc tôi vẫn còn thiếu các vấn đề tiềm năng? Chính xác khi nào tôi có thể giả định một yêu cầu được hoàn thành (do đó, đối tượng có sẵn cho một yêu cầu mới), đó là khi nhận readyState 4 và trạng thái http 200? (ví dụ: tôi có thể chắc chắn không có thêm cập nhật hoặc gọi lại nào sau đó không?)
Chỉ cần tự hỏi những gì máy chủ bạn có kế hoạch sử dụng và những gì internet bạn đã nối với điều này bởi vì kịch bản này nếu bạn là chính xác với hàng ngàn yêu cầu là vô cùng tài nguyên sử dụng – gabeio
Tôi đã có một máy chủ chuyên dụng tàn bạo sẵn cho việc này. Nhưng hàng ngàn yêu cầu chỉ được dự kiến sẽ được thực hiện trong quá trình vài giờ, nó không giống như một yêu cầu mỗi giây hoặc lâu hơn. Giống như một vài phút, nhưng nó có thể tiếp tục làm điều đó trong nhiều giờ. –
cũng tốt javascript sẽ làm tốt nếu bạn cần thậm chí nhanh hơn tức là một yêu cầu mỗi giây tôi sẽ đề nghị sử dụng flash hoặc applet java – gabeio