Оптимизация frontend'a (помимо JavaScript)?

Меня интересует, что можно почитать на тему оптимизации работы верстки. Также, возможно, в сочетании с JS оптимизацией.
Как вообще можно "ускорять" работу сайта? Речь не об оптимизации первой загрузке (склейки минификации и т.д.), не о работе с сетью (интересует не скорость загрузки ресурсов, а скорость рендеринга и минимизация затрат при обновлении DOM) и не о скорости JS (оптимизация самого JS кода, избегание блокирующих оптимизатор конструкций и т.д.)

Речь именно об оптимизации верстки: как сделать "чтоб тут не лагало при скролле", а тут при наборе текста. Также интересует оптимизация (именно с точки зрения производительности) под мобильные браузеры.

Хотелось бы получить информацию в стиле: (это не реальные советы, а примеры)
- использование 3д-трансформаций поможет сделать...
- если убрать все флексбоксы и везде сделать абсолютное позиционирование - все будет работать быстрее...
- табличная верстка быстрее блочной (или наоборот)...
- чтобы снизить частоту reflow & repaint вы должны избегать...
- заменяйте SVG на PNG...
и т.д.

Буду рад ссылкам на статьи или книги, описывающие механизмы рендеринга с упором на производительность.
  • Вопрос задан
  • 6275 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 4
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Меньше DOM элементов.
Меньше вложенности DOM элементов.
Меньше ивентов
Минус jQuery
Меньше скриптов и библиотек
Меньше CSS
Минус Bootstrap и прочие тяжелые либы
Меньше repaint'ов
Меньше манипуляций с DOM
Больше оптимизации картинок
Меньше кастомных шрифтов
Если шрифты кастомные - использовать ровно необходимый charset и вырезать лишнее
...

PS: SVG на PNG не меняйте. Сомнительная экономия на спичках, а качество сильно хуже, возможностей меньше. Да и вообще "фу, прошлый век"

Ту же сеть не сбрасывайте со счетов - тот же HTTP/2 с его потоком (прощай, конкатенация) одновременно доставит в браузер все нужное, что ускорит прорисовку. А с новым server push все самое нужное вообще прилетает вместе с html. В общем, тут все связано.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Таймеры и слушатели (подписка на события) - основные лангольеры.
280px-%D0%9B%D0%B0%D0%BD%D0%B3%D0%BE%D0%
Для анимации - используем CSS
Обработчики событий (стараемся использовать реже) - JS
Для сложных/периодических вычислений: Asm.js

Ответ на "чтобы не лагало при...": используем ИЕРАРХИЧЕСКИЙ контроль слушателей событий и включаем/отключаем изоляцию целых "ветвей дерева" событий в различных ситуациях: ввод в поле, нахождение во вьюпорте и т.д.
Ответ написан
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Кажется это по теме: https://video.yandex.ru/users/ya-events/view/3267/

В виде статьи тут: https://habrahabr.ru/company/yandex/blog/239169/
но она почему-то поломана, можно в кеше гугла поискать...

Так же в гугле можно найти слайды презентации.
Ответ написан
Комментировать
@webdevkin15
Насчет "чтобы не лагало", возможно, поможет эта статья
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы