Я работал над небольшим количеством кода JavaScript, который при определенных условиях лениво загружает пару различных библиотек ( Clicky Web Analytics и механизм выбора Sizzle ).
Этот скрипт загружается миллионы раз в день, поэтому оптимизация производительности является серьезной проблемой.На сегодняшний день я использовал пару флагов, таких как script_loading
и script_loaded
, чтобы убедиться, что я не загружаю ни одну библиотеку более одного раза (под "нагрузкой" я имею в виду запрос сценариев после загрузки страницы путем вставкиэлемент <script>
в DOM).
Мой вопрос: вместо того, чтобы полагаться на эти флаги, которые стали немного громоздкими и трудными для понимания в моем коде (вспомним обратные вызовы и все ловушки асинхронногокод), кросс-браузер безопасен (т. е. обратно в IE 6) и не влияет на производительность, просто вызывая простую функцию для вставки элемента <script>
всякий раз, когда я достигаю ветви кода, для которой нужна одна из этих библиотек?
Последний по-прежнему гарантирует, что я загружаю любую библиотеку только тогда, когда она мне нужна, а также упрощает и уменьшает вес моей кодовой базы, но я должен быть абсолютно уверен, что это не приведет к дополнительным, ненужнымзапросы браузера.
Я догадываюсь, что добавление элемента <script>
несколько раз не будет вредным, так как я предполагаю, что браузеры должныognize дубликат URL src
и использование локальной кэшированной копии.Но вы знаете, что происходит, когда мы предполагаем ...
Я надеюсь, что кто-то достаточно знаком с поведением различных современных (и не очень современных, таких как IE 6) браузеров, чтобы иметь возможностьговорить с тем, что произойдет в этом случае.
А пока я напишу тест, чтобы попытаться ответить на этот вопрос из первых рук.Я сомневаюсь, что это может быть трудным и громоздким, чтобы с уверенностью проверить в каждом браузере, что мой скрипт должен поддерживать.
Заранее благодарен за любую помощь и / или ввод!