Tôi đang hỗ trợ một ứng dụng dựa trên trình duyệt HTML/JS tải không đồng bộ dữ liệu (SVG) khi người dùng duyệt xung quanh trong ứng dụng. (Ứng dụng này là một trình đọc sách điện tử, nhưng trường hợp sử dụng cũng tương tự như một ứng dụng bản đồ trực tuyến). Về mặt lý thuyết, người dùng có thể yêu cầu nhiều dữ liệu hơn RAM có sẵn, nếu họ dành nhiều thời gian sử dụng ứng dụng, vì lượng dữ liệu có thể tải xuống tổng thể lớn (GB, nhưng chỉ 10s của K cho mỗi yêu cầu, tức là mỗi SVG)Làm cách nào để giảm thiểu việc sử dụng bộ nhớ dư thừa trong trình duyệt khi tải dữ liệu không đồng bộ?
Tôi đã có báo cáo về một số người dùng gặp sự cố chậm, trình duyệt bị treo vv sau thời gian sử dụng kéo dài. Không có sự nhất quán trong trình duyệt hoặc hệ điều hành.
Điều này dẫn đến một số câu hỏi liên quan:
Có bất kỳ "thực hành tốt" với loại hình ứng dụng, bằng cách nào đó loại bỏ dữ liệu cũ hoặc ít thường được sử dụng từ bộ nhớ, trong một phiên? Làm thế nào chính xác (trong JS) này sẽ được thực hiện? Có đủ để loại bỏ một phần tử khỏi DOM có chứa SVG không, cho bộ nhớ được sử dụng bởi SVG đó sẽ được phát hành không? Điều này có cần thiết không?
Điều gì xảy ra chính xác với các trình duyệt chính (Chrome, FF, IE8/9/10 ...) khi lượng dữ liệu được yêu cầu không đồng bộ vượt quá bộ nhớ khả dụng? Nó chỉ là một trường hợp phân trang đĩa cứng?
Có bất kỳ thử nghiệm nào có thể được thực hiện trong Javascript để biết khi nào "đã đạt quá nhiều dữ liệu" không? ví dụ. giàn khoan phát triển của tôi có lượng RAM lớn và vì vậy tôi không nhận thấy vấn đề này, nhưng trên các thiết bị thử nghiệm (và một số máy người dùng) có RAM ít hơn nhiều và vấn đề được tìm thấy sớm hơn (nhưng không phải mọi lần, và không dễ lặp lại, khó chịu).
Tôi không có kinh nghiệm cá nhân nhưng trang này có thể có một số thông tin hữu ích: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management?redirectlocale=en-US&redirectslug=JavaScript%2FMemory_Management – mulquin
Câu trả lời ngắn gọn. Trình duyệt xử lý tất cả những thứ đó. Bạn có thể xóa phần tử DOM, trình xử lý sự kiện, thuộc tính đối tượng không sử dụng, v.v. nhưng cuối cùng trình duyệt quyết định cách quản lý bộ nhớ của nó. Bạn sẽ khó ép để cố gắng lừa nó vào làm một cái gì đó. Bạn có thể cố gắng loại bỏ mọi thứ bằng cách sử dụng iframes, nhưng điều đó chỉ gây rối trong quan điểm của tôi. – thoughtrepo