вопросы производительности при динамической загрузке объектов Javascript
-
20-08-2019 - |
Вопрос
Что быстрее,
Используя запрос XMLHTTP Get, а не используя eval() для reponsetext
Использование метода JSONP для загрузки скрипта и последующей оценки innerHTML скрипта.
Динамическое добавление тега script в заголовок документа, где объекту javascript присваивается переменная?
Моя интуиция подсказывает мне, что это должен быть вариант 3, но я не уверен, как eval сравнивается с использованием тега script.Есть какие-нибудь мысли?
Решение 3
Я согласен, что библиотека JSON2, вероятно, является подходящим вариантом для обработки eval().Но что касается транспорта, похоже, что механизм JSONP работает быстрее, чем XMLHttpRequest, согласно некоторому анализу, проведенному Джоном Ресигом.
Другие советы
Это может варьироваться в зависимости от браузера и некоторых других факторов, поэтому я думаю, что если вы действительно хотите добиться наилучшей производительности, вам следует провести несколько тестов и профилировать их.Во-первых, производительность eval() может сильно различаться в зависимости от того, что вы вычисляете()
Вы должны просто использовать Библиотека JSON2 для анализа данных json, как с помощью eval
небезопасно (используя eval
приводит к большому количеству потенциальных эксплойтов сайта), это медленно (особенно в новых jitting JS-движках), и, наконец (что более важно) объект JSON, предоставляемый библиотекой JSON2, становится частью скрипта ecma (например.javascript) стандарт, что означает, что браузеры теперь реализуют синтаксический анализ json (и строковую обработку) изначально, что приводит к значительному повышению производительности.
К счастью, если вы используете библиотеку JSON2, она обнаруживает существование собственной реализации объекта JSON и не переопределяет ее, поэтому простое произвольное ее использование даст вам безопасную реализацию, которая волшебным образом станет быстрее по мере улучшения поддержки браузера.