Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Давайте я расскажу вам страшную историю. Есть такой проект, как Патреон. И предлагает он вставить на свой сайт кнопку, ведущую на страницу подписки:
<a href="https://www.patreon.com/bePatron?u=27084182" data-patreon-widget-type="become-patron-button">Become a Patron!</a>
<script async src="https://c6.patreon.com/becomePatronButton.bundle.js"></script>
Что делает скрипт? Он превращает скучную ссылку в элегантную кнопку:
Скрипт весит 110кб в сжатом виде и 415кб в несжатом минифицированном. Содержит он:
Плюс 10кб стилей и 30кб шрифтов, но это уже сущие мелочи.
И это они ещё соптимизировали. В прошлый раз, когда я смотрел, скрипты весили около мегабайта.
Уверен, порт игры был бы простым, примитивным
высказывание спорное
а еще например, я сохранил эту страницу на диск
и она весит 243 КБ
а картинки + js (т.е. всё прочее) еще 3,2МБ
интересно как автор замерил размер той страницы
но это бред, из 900 кб(html+css) сам html только 25%
css нормально кэшируется, даже если бы его было суммарно на несколько мегабайт — ничего в этом страшного не было бы
поэтому тема спорная, кэш никто не отменял
250 КБ для 2016 — мелочь.
Если поднапрячь память, то еще когда я учился в школе началось нытьё, что некоторые веб-страницы весят около мегабайта
но если мегабайт в 2005 было овердофига, то 3 мегабайта в 2016 — ерунда.
скорости выросли в десятки раз
специально порылся, нашел мастера и маргариту
ansi — размер 850КБ
utf-8 — размер 1,4МБ
сайты-то сейчас на utf-8 делают, опять же сравнение с другйо кодировкой некорректно
Это почти на 100 КБ больше, чем полный текст «Мастера и Маргариты», наполненного мистикой и комедией романа Булгакова о Дьяволе, который наведывается в Москву со своей свитой (включая огромного кота!) во время Большого террора 1937 года.
Особо стоит отметить и появление двух «новеньких» гостей на балу у сатаны, имен которых Коровьев якобы не знает. Один из них – автор плана убийства человека, «разоблачений которого он чрезвычайно опасался» (с. 686), с помощью яда, которым обрызгали стены кабинета. Второй – исполнитель. Этот изысканный способ убийства и анонимность гостей на балу ассоциируются с попыткой Ягоды отравить Ежова, стены и шторы кабинета которого были, по его приказанию, обрызганы ртутью (ртуть добавили и в побелку). Правда, желаемого результата Ягода не добился. Но присутствие Ягоды на балу у Воланда связано уже с концом 30-х годов – он мог там появиться только после смерти в 1937 году.http://www.e-reading.club/chapter.php/82995/6/Pozdnyaeva_-_Voland_i_Margarita.html
Из реалий 1930-х годов Б. Гаспаров отмечает неоднократное упоминание в романе имени А. С. Пушкина в связи со столетием гибели поэта в 1937 году. В торжествах по этому поводу активное участие принял Булгаков (пьеса «Последние дни»).
В ней описывается куча проблем современного веба, не только на стороне клиентского кода, но и на стороне дизайна, рекламы и многого другого.
firstChild/nextSibling/children/childNodes
и т.п.) приводи к неминуемым провалам в производительности, даже элементарное element.myProp = 123
— проблема. Именно поэтому, самые быстрые реализации VDOM использую максимум createElement/insertBefore/replaceChild/removeChild
и только в случае крайней необходимости, некоторые даже пытаются переиспользовать ранее удаленные элементы, чтобы лишний раз не вызывать createElement
.тот же NaCL
Совершенно не "тот же NaCL".
принципиально всё вами сказанное про WebAssembly применимо и для asm.js
да, я знаю, что это разные технологии и в чем их ключевые отличия
не приводит, и присваивание кастомных дом свойств — не проблема
childNodes
vs. firstChild
+ nextSibling
, второй будет быстрей.можно делать минимум взаимодействий с DOM и без виртуального дома.
var greeting = new $jin2_atom( 'Hello' )
var bodyRenderer = new $jin2_atom( () => {
document.body.innerText = greeting.get()
} )
bodyRenderer.pull()
setTimeout( () => { greeting.set( 'Hello, world' ) } , 1000 )
А про vdom — зависит от того какую реализацию vdom возьмём
не приводит, не проблема :)
firstChild/nextSibling/parentNode
всё равно медленней, чем не вызывать их вовсе, а ходить по vtree, вы же сами это прекрасно знаете.https://github.com/localvoid/kivi
https://github.com/localvoid/uix
но относительно всего остального оверхэда в конечном приложении — это будет не так сильно заметно
forEach/map/etc
, bind
, EventEmitter
и так далее. Очень многое можно реально убыстрить, но этим должен браузер делать, а не библиотека Х.для тестирования своих либ
Requests: 352
Your website is faster than 51% of all tested websites
Оптимизировать размер? Нам что, время больше некуда девать.
Кризис ожирения сайтов