ฉันรู้ว่ามีคนถามคำถามนี้มาก่อน แต่ดูเหมือนจะไม่มีคำตอบใดที่สามารถแก้ไขปัญหาได้ ฉันกำลังทดสอบหน้าเว็บ AJAX ซึ่งอัปเดตองค์ประกอบใน DOM ผ่าน javascript
ทุกนาที เซิร์ฟเวอร์จะถูกสอบถามข้อมูลใหม่และ DOM จะได้รับการอัปเดตตามนั้น จากสิ่งที่ฉันบอกได้ การใช้หน่วยความจำสำหรับหน้านี้ใน Chrome เพิ่มขึ้น แต่ก็ไม่ได้มากเกินไป (เริ่มต้นประมาณ 40 MB และอาจถึงสูงสุด 80 MB) อย่างไรก็ตาม ใน Firefox การใช้หน่วยความจำเริ่มต้นที่ประมาณ 120 MB และสามารถขยายได้ถึง 400 MB ฉันได้ลองใช้ Javascript ด้วย Firebug แล้ว และดูเหมือนว่าหน่วยความจำจะขยายมากที่สุดเมื่อ DOM ได้รับการอัปเดตผ่านวิธี Javascript ของฉัน
การจัดการ DOM นั้นง่ายดาย เช่น:
var myTable = document.createElement("table");
var thead = document.createElement("thead");
var tr = document.createElement("tr");
var th = document.createElement("th");
th.appendChild(document.createTextNode("column1"));
tr.appendChild(th);
for(var test in obj.testObjs){
th = document.createElement("th");
th.appendChild(document.createTextNode(obj.testObjs[test].myVar));
tr.appendChild(th);
}
ก่อนที่จะผนวกข้อมูลใหม่เข้ากับโหนดใน DOM ฉันจะต้องล้างข้อมูลที่มีอยู่ก่อน ฉันได้ลองหลายวิธี รวมถึงสิ่งที่อธิบายไว้ที่นี่: อย่างไร หากต้องการลบองค์ประกอบ DOM โดยไม่มีหน่วยความจำรั่ว
พร้อมทั้งวิธีง่ายๆ เช่น:
function clearChildren(node){
if(node != null){
while (node.hasChildNodes()) node.removeChild(node.firstChild);
}
}
ฉันได้อ่านด้วย ( การเพิ่ม/การลบแบบวน ของโหนด DOM ทำให้หน่วยความจำรั่วใน JavaScript? ) ที่เบราว์เซอร์เริ่มรวบรวมขยะเมื่อถึงระดับหนึ่งเท่านั้น? สามารถยืนยันได้หรือไม่? ฉันรู้สึกว่าพีซีของฉันทำงานช้าหลังจากผ่านไประยะหนึ่งเนื่องจากหน่วยความจำที่เพิ่มขึ้น
ฉันรู้สึกว่าต้องมีวิธีแก้ปัญหานี้ เนื่องจากไซต์เชิงพาณิชย์ที่ฉันทดสอบว่าทำตามขั้นตอนการทำงานเดียวกันนั้นไม่ทำให้การใช้หน่วยความจำเพิ่มขึ้น
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.
ขอบคุณ