جدول المحتويات

شجرة محتويات ajax

إن توليد شجرة المحتويات في تطبيق الويب حاليا يعاني من الكثير من المشاكل. أهمها أنها تؤدي إلى تجمد المتصفح.

تحديد سبب المشكلة قبل البحث عن حل

الأسباب المتوقعة للمشكلة يمكن أن تكون بسبب

البحث عن نموذج لاختبار جودة الحل المرشح

نريد عمل prototype نعزل فيه العوامل ونختبرها واحد بعد الأخر.

إن أفضل شجرة كي نختبرها هي الأكبر حجما (ربما نحتاج أيضا إلى الأكثر عمقا) لذا اخترت لسان العرب وملف json المثل لها حجمه نصف ميغا (مقارنة ب 27 كيلوبايث لموسوعة اليهود للمسيري و 150 كيلو بايت لصحيح مسلم)

طريقة الاختبار وضع ملف json أو أي ملفات نحتاجها في ajax كملفات ساكنة. طلب الملف عبر كود javascript وقياس الزمن اللازم لبناء الشجرة بكود يشبه

function buildtree(js) {
	var treediv1=document.getElementById("treediv1");
	var treediv2=document.getElementById("treediv2");
	var t1=buildtree_str(treediv1,js);
	var t2=buildtree_dom(treediv2,js);
 
	alert('t1='+t1+", t2="+t2);
 
}
/* getJson(true, 'data/lisan.json', {}, buildtree); */
function init() {
	getJson(true, 'data/j1.json', {}, buildtree);
	return false;
}

حيث تقوم الدالة buildtree_str بعمل ما يشبه

	var t=new Date();
	t1 = t.getTime();
	/*...*/
	t=new Date();
	t2 = t.getTime();
	return t2-t1;

نتائج الاختبار الأول

حلول جذرية مختلفة

النص مع روابط للأبواب الفرعية