Влияет ли Javascript размер файла на время анализа в браузере? Будут ли два файла 5kb JS обрабатываться быстрее, чем один файл 10kb или наоборот? - PullRequest
0 голосов
/ 21 февраля 2020

Я не знаю много о JS разборе или производительности.

Но я хотел бы знать, есть ли разница в производительности, когда браузер анализирует большой файл, по сравнению с меньшими файлами с таким же общим количеством размер.

Что разбирает быстрее:

10kb vs. (2 x 5kb)

Имеет ли это значение? Или это ничтожно мало? Что, если мы сравним:

1mb vs. (1000 x 1kb)

Примечание 1: Это примерно браузеры парсинг JS.

Примечание 2: Я предполагаю, что это все тот же JS код. Я имею в виду, что либо в одном файле, либо в разбивке по нескольким файлам меньшего размера анализируемый код должен быть одинаковым.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

(здесь разработчик V8.)

Для скорости синтаксического анализа важен общий объем сценария, а не организация в файлы.

При этом может быть вторичные эффекты, которые могут оказать большее влияние на общую воспринимаемую загрузку страницы, чем скорость необработанного анализа. Как указывает ответ Ашока, загрузка - это часть картины, где исторически многие мелкие ресурсы находились в невыгодном положении, которое, как вы указываете, должно решаться с помощью HTTP2. С другой стороны, несколько ресурсов могут получить ускорение благодаря одновременным соединениям по сравнению с одним большим портом.

Еще один эффект, который стоит рассмотреть, - это кэширование. Если у вас есть одна часть кода, которая редко изменяется (например, сторонняя библиотека, которую вы обновляете каждые несколько месяцев), и другая часть, которая сильно меняется (например, ваш собственный код, где вы развертываете новые версии через день), тогда имеет смысл разделить файлы сценариев вдоль этой строки, чтобы браузер мог кэшировать части, которые не меняются. Это по крайней мере позволит избежать загрузки части, которая не изменилась; некоторые браузеры могут даже кэшировать результаты синтаксического анализа / компиляции кода, что сэкономит еще больше работы.

Применимые практические правила:

(1) Do что имеет смысл для вашего случая (т.е. что наиболее удобно); или, по крайней мере, начните с этого и посмотрите, работает ли он достаточно хорошо. Преждевременная оптимизация (т. Е. Усложнение вещей в надежде на увеличение скорости без проверки того, действительно ли это необходимо или полезно) обычно является плохой идеей.

(2) Измерение любое сами, с тестом, максимально приближенным к вашей реальной ситуации. Например, примените реалистичное разделение c к вашим фактическим источникам (может быть, в несколько кусков? Или объедините их в один, если разделение было тем, что вы делали ранее) и протестируйте это, вместо того, чтобы генерировать тысячи файлов с фиктивным контентом. Если вы не можете измерить разницу, то нет никакой разницы, которая имеет значение! И если вы можете измерить разницу, то у вас есть ответ: -)

0 голосов
/ 21 февраля 2020

По скорости, один файл JS всегда лучше, чем несколько файлов JS, так как браузер будет делать меньше сетевых запросов. Кроме того, для извлечения каждого файла JS браузер сначала должен открыть соединение HTTP-запроса, выполнить рукопожатие, а затем выполнить передачу данных (JS файл).

Из-за этого несколько JS Файлы замедляют загрузку содержимого.

Но опять же, это зависит от того, какой код содержит файл JS. Для получения более подробной информации просмотрите Один большой javascript файл или несколько небольших файлов?

...