سؤال

وهو أسرع،

  1. استخدام طلب الحصول على XMLHTTP وبدلاً من استخدام eval() لنص الاستجابة

  2. استخدام تقنية JSONP لتحميل البرنامج النصي ثم تقييم محتوى HTML الداخلي للبرنامج النصي.

  3. إضافة علامة برنامج نصي ديناميكيًا إلى رأس المستند حيث يتم تعيين كائن جافا سكريبت لمتغير؟

يخبرني حدسي أن هذا يجب أن يكون الخيار 3، لكنني لست متأكدًا من مدى مقارنة التقييم باستخدام علامة البرنامج النصي.أي أفكار؟

هل كانت مفيدة؟

المحلول 3

أوافق على أن مكتبة JSON2 هي على الأرجح الطريقة المناسبة لـ eval()'ing.لكن بالنسبة للنقل، يبدو أن آلية JSONP أسرع من XMLHTTPRequest وفقًا لبعض التحليلات التي أجراها John Resig.

http://ejohn.org/blog/native-json-support-is-required/

نصائح أخرى

يمكن أن يختلف الأمر بناءً على المتصفح وبعض العوامل الأخرى، لذا أعتقد أنه إذا كنت تريد حقًا أفضل أداء، فيجب عليك إجراء بعض الاختبارات وتحديد مواصفاتها.أولاً، يمكن أن يختلف أداء eval()‎ بشكل كبير اعتمادًا على ما تقوم بتقييمه()

يجب عليك فقط استخدام مكتبة JSON2 لتحليل بيانات json، كما هو الحال في استخدام eval غير آمن (باستخدام eval يؤدي إلى عدد كبير من عمليات استغلال الموقع المحتملة)، فهو بطيء (خاصة في محركات JS الأحدث)، وأخيرًا (والأهم من ذلك) أصبح كائن JSON الذي توفره مكتبة JSON2 جزءًا من البرنامج النصي ecma (على سبيل المثال.javascript) القياسي، مما يعني أن المتصفحات تقوم الآن بتنفيذ تحليل (وتوحيد) json محليًا مما يؤدي إلى تحسين الأداء بشكل كبير.

لحسن الحظ، إذا كنت تستخدم مكتبة JSON2، فإنها تكتشف وجود تطبيق أصلي لكائن JSON ولا تتجاوزه، لذا فإن مجرد استخدامها بشكل تعسفي سيمنحك تنفيذًا آمنًا سيصبح أسرع بطريقة سحرية مع تحسن دعم المتصفح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top