JavaScript и CSS, анализирующий производительность

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

9
задан ɢʀᴜɴᴛ 25 June 2017 в 09:29
поделиться

3 ответа

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

YSlow, Скрипач и Firebug не являются лучшими инструментами для контроля скорости парсинга. Если они не были обновлены совсем недавно, они не разделяют количество времени, требуемое выбирать JS по HTTP или загружаться от кэша по сравнению с количеством времени, проведенным, анализируя фактическую полезную нагрузку JS.

Скорость синтаксического анализа немного трудно измерить, но мы преследовали эту метрику неоднократно на проектах, я продолжил работать, и влияние на pageloads были значительными даже с ~500k JS. Очевидно, более старые браузеры страдают больше всего..., надо надеяться, Chrome, TraceMonkey и т.п. помогают разрешить эту ситуацию.

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

Однако может иметь место, что, скажем, 50% Вашего JS никогда не необходимы 80% Ваших пользователей из-за Ваших моделей трафика. Если это так, Вы должны определенно пользователь меньшие, упакованные полезные нагрузки JS только на страницах, где JS необходим. Иначе 80% Ваших пользователей получат ненужный JS парсинг штрафов на каждом pageload.

Нижняя строка: трудно найти надлежащий баланс кэширования JS и меньших, упакованных полезных нагрузок, но в зависимости от Вашей модели трафика определенно определенно стоит рассмотреть технику кроме разрушения всех Ваших JS в каждый pageload.

14
ответ дан 4 December 2019 в 11:09
поделиться

Я полагаю, что YSlow делает, но знать, что, если все запросы не по закольцованному соединению, Вы не должны волноваться. HTTP наверху файлов раскола повлияет на производительность намного больше, чем парсинг, если Ваши файлы CSS/JS не превысят несколько мегабайтов.

3
ответ дан 4 December 2019 в 11:09
поделиться

Для добавления к большому ответу kamen я сказал бы, что на некоторых браузерах, время синтаксического анализа для больших js ресурсов растет нелинейно. Таким образом, 1 meg JS файл займет больше времени для парсинга, чем два 500k файла. Таким образом, если большой Ваш трафик является людьми, у которых, вероятно, будет Ваш кэшируемый JS (возвратите посетителей), и все Ваши файлы JS стабильны кэшем, может иметь смысл разбивать их, даже если Вы заканчиваете тем, что загрузили всех их на каждом pageview.

2
ответ дан 4 December 2019 в 11:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: