Π Π°Π·Π½ΠΎΠ΅

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ js: Как ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JavaScript ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ сайта

03.07.2021

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сайта ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ JavaScript

Π‘Π°ΠΉΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎΒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ JS-ΠΊΠΎΠ΄Π°. Если ΠΆΠ΅ этого Π½Π΅Β ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, то сайт Π±ΡƒΠ΄Π΅Ρ‚ нСдостаточно быстро ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ на сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Если ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ скриптовыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅Β Π½ΡƒΠΆΠ½Ρ‹ на страницС β€” ΠΈΡ… Π½Π°Π΄ΠΎΒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ. В процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ часто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ скрипты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. НапримСр, скрипты для отладки. Π˜Π»ΠΈΒ Ρ‚Π΅ скрипты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎΒ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄ΡƒΠΌΠ°Π»ΠΈ. ΠΠ΅Β Π½Π°Π΄ΠΎΒ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ…Π»Π°ΠΌ.

Если Π±Π΅Π·Β ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ скриптов сайт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½, Ρ‚ΠΎΒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ этих JS-скриптов ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ послС отрисовки страницы (для этого Π½Π°Π΄ΠΎΒ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π²Β ΠΊΠΎΠ½Π΅Ρ† сСкции body). НСкоторыС скрипты Π½ΡƒΠΆΠ½Ρ‹ для создания эффСктов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ нС сразу послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы ΠΈΠ»ΠΈΒ ΠΈΡ… отлоТСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° нС влияСт Π½Π°Β ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ от сайта. АвтоматичСскоС пролистываниС слайдСра или скрипт для сбора статистики посСщСний, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΡƒΠΆΠ΅ послС отрисовки страницы Π²Β Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠŸΡƒΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ побыстрСС ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ страницу, Π°Β Π½Π΅Β ΠΆΠ΄Ρ‘Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ ΠΏΡ€ΠΈΒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ лишнСС врСмя Ρ€Π°Π΄ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Π΅Ρ€Π΅Π·Β 5 сСкунд красиво пСрСлистнулся Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹ΠΉ Π±Π°Π½Π½Π΅Ρ€ ΠΈΠ»ΠΈΒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ посчитали.

Π—Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ скрипты с поддомСнов, с других Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΈΠ»ΠΈΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ CDN β€” Π΄Π°ΠΆΠ΅ у самых ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² Ρ„Π°ΠΉΠ»Ρ‹ с одного Π΄ΠΎΠΌΠ΅Π½Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π²Β ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Если ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, стилСй и скриптов на страницС достаточно ΠΌΠ½ΠΎΠ³ΠΎ, то образуСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π°Β Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² лимитируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для домСна, поэтому Ссли JS-Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ с другого Π΄ΠΎΠΌΠ΅Π½Π° (ΠΈΠ»ΠΈΒ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Π°), Ρ‚ΠΎΒ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ быстрСС за счёт ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ скрипты Π½Π΅Β Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ с «нСпонятных» Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ². Если внСшний Π΄ΠΎΠΌΠ΅Π½ пСрСстанСт ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ или станСт ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ ΡΒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ, Ρ‚ΠΎΒ Π±ΡƒΠ΄Π΅Ρ‚ Β«Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒΒ» вСсь ваш сайт, Π°Β ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Β«Π»ΡŽΠ±ΠΎΠ²Π°Ρ‚ΡŒΡΡΒ» Π±Π΅Π»Ρ‹ΠΌ экраном. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ внСшниС Π΄ΠΎΠΌΠ΅Π½Ρ‹ для скриптов, Ρ‚ΠΎΒ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, что эти Π΄ΠΎΠΌΠ΅Π½Ρ‹ достаточно ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹.

JS Π½Π°Π΄ΠΎΒ ΡΠΆΠ°Ρ‚ΡŒ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², пСрСносов строк, сокращСниС Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² скриптов ΠΈΒ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. ΠŸΡ€ΠΈΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ β€” ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π²Β production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ. Для собствСнных скриптов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΡΠΆΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ ΠΈΒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ JavaScript, β€” UglifierJS, JSMin, Closure Compiler, YUI Compressor. ΠŸΡ€ΠΈΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ агрСссивных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π΄Π»ΡΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ компрСссора и протСстируйтС Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

БовмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ скрипты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π²Β ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ». Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π²Β 50Β Kb осущСствляСтся быстрСС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ 10Β Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΒ 5Β Kb, ΠΎΡ‚Π΄Π°Ρ‡Π° Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² мСньшС Π³Ρ€ΡƒΠ·ΠΈΡ‚ сСрвСр, да и сТатиС эффСктивнСС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Β Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ….

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ GZIP для сТатия Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сТатых Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ β€” ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сТатиС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… скриптов на максимальном ΡƒΡ€ΠΎΠ²Π½Π΅ компрСссии ΠΈΒ ΠΎΡ‚Π΄Π°Ρ‡Π° Π²Π΅Π±-сСрвСром ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сТатых Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Β«Π½Π°Β Π»Π΅Ρ‚ΡƒΒ» Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ сСрвСр, поэтому Π΅Π³ΠΎ Π½Π°Β Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠšΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ скрипты на сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° β€” нС заставляйтС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ скрипт: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π²Β ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π²Π΅Π±-сСрвСра (Expires ΠΈΠ»ΠΈΒ Cache-Control max-age, Last-Modified ΠΈΠ»ΠΈΒ ETag).

ΠΠ΅Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ большиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ бСз надобности β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π΄ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ элСмСнтарного эффСкта Π½Π°Β Π³Π»Π°Π²Π½ΠΎΠΉ страницС сайта нС стоит на всСх страницах ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ jQuery. Если для рСализации всСй интСрактивности сайта ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ 30 строчСк простого js-ΠΊΠΎΠ΄Π°, Ρ‚ΠΎΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ просто Π½Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ.

ΠŸΡ€ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ javascript ΠΊΠΎΠ΄Π° (Ρ‡Π°ΡΡ‚ΡŒ 1)

ΠΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ β€” Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ послС профилирования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… скриптов, ΠΈ поисков быстрого ΠΊΠΎΠ΄Π°.

ВсС большС статСй ΠΏΠΎ клиСнтской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ появляСтся. Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈΠ· статСй Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±Π΅Π· понимания ΠΏΡ€ΠΈΡ‡ΠΈΠ½. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π°Π²Ρ‚ΠΎΡ€Ρ‹ статСй Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ свою ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π’ΠΈΠ΄Π΅Π» людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΠ΅Ρ€ΡŒΠ΅Π· спорят ΠΏΡ€ΠΎ быстрыС ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΈ использованиС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для ускорСния. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… манипуляциях встрСчаСтся ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ. Π­Ρ‚ΠΈ споры ΠΏΡ€ΠΎΡ†Π²Π΅Ρ‚Π°ΡŽΡ‚, ΠΏΠΈΡˆΡƒΡ‚ΡΡ тСсты. ΠŸΡ€Π°Π²Π΄Π° рСбята Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ самым ΡƒΠ·ΠΊΠΈΠΌ мСстом клиСнтского JS являСтся DOM.

ΠŸΡ€ΠΈ пСрСписывании Ρ†ΠΈΠΊΠ»Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (для Π±ΠΎΠ»Π΅Π΅ быстрого поиска ΠΏΠΎ областям видимости) скрипт ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π½Π° 5%, Π½Ρƒ Π½Π° 10%. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚
потСря Π² читаСмости исходного ΠΊΠΎΠ΄Π°, Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ.

Но ситуация с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ β€” ΠΏΠ°Π»ΠΊΠ° ΠΎ Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΠ½Ρ†Π°Ρ…. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ†: браузСрная оптимизация. НапримСр ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ²:

 // 1
for (var i = 0; i 

Вторая вСрсия Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ многословна, Π½ΠΎ быстрСС ΠΏΠ΅Ρ€Π²ΠΎΠΉ. Π’Ρ€Π΅Ρ‚ΡŒΡ ΠΌΠ΅Π½Π΅Π΅ многословна, Π½ΠΎ Π½Π΅ совсСм понятна слСту (ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ массиву Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС Π½Π΅ СстСствСнСн для понимания).

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ сами ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΈ большой Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² скорости ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² соврСмСнном Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, Π½Π΅ говоря ΡƒΠΆΠ΅ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ощущСниях. Какая Ρ€Π°Π·Π½ΠΈΡ†Π°, скрипт выполнится Π·Π° 10мс ΠΈΠ»ΠΈ 9мс.

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΡ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для старых Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ². Но Ρ‚ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос цСлСсообразности: Π½Π°Π΄ΠΎ Π»ΠΈ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ количСство нСпонятного ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (Π΅Ρ‰Π΅ Π½Π΅ понятно Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π»ΠΈ) Ρ€Π°Π±ΠΎΡ‚Ρ‹ старых Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ². Намного Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ многословным ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌ. ΠŸΡƒΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹.

А Π²ΠΎΡ‚ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΊΠΎΠ½Π΅Ρ† β€” это DOM. ОбновлСниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Π² DOM-e Π²Π΅Π΄Π΅Ρ‚ Π·Π° собой каскад Ρ‚Π΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ со стороны Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ свойств children, parentNode, nextSibling Ρƒ Π½ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Β«Ρ†Π΅ΠΏΠ»ΡΡŽΡ‚ΡΡΒ» этим ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ liveCollections, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ repaint ΠΈ reflow, очистка памяти, Ссли использован innerHTML, Ρ‚ΠΎ Π΅Ρ‰Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ парсинг тСкста Π² DOM модСль.

На Ρ„ΠΎΠ½Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ количСства дСйствий Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ€ΠΊΠ½ΡƒΡ‚. Блишком просто ΠΎΠ΄Π½ΠΈΠΌ лишним ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ DOM-Ρƒ свСсти всС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π½Π΅Ρ‚.

Π£Π·ΠΊΠΈΡ… мСст Π² DOM-Π΅ мноТСство. Π‘Π°ΠΌΡ‹Π΅ тяТСлыС β€” ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΠ·Π»ΠΎΠ². ΠŸΡ€ΠΈ Ρ‚ΠΎΠΌ врСмя ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π° зависит ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅ΠΉ слоТности DOM Π΄Π΅Ρ€Π΅Π²Π°, максимальной влоТСнности, количСства Ρ‚Π°Π±Π»ΠΈΡ† стилСй ΠΈ количСства ΠΏΡ€Π°Π²ΠΈΠ». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ способ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ даст Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ прирост, Π² зависимости ΠΎΡ‚ слоТности страницы.

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, ΠΈ со своСй стороны ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π΄Π²ΠΈΠΆΠΊΠΎΠ². И Ρ‚ΡƒΡ‚ ΠΌΡ‹ наблюдаСм Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ: Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ прирост Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…. Π§Π΅ΠΌ Π΄Ρ€Π΅Π²Π½Π΅Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, Ρ‚Π΅ΠΌ вСроятнСС, Ρ‡Ρ‚ΠΎ Ρ…ΠΈΡ‚Ρ€Ρ‹Π΅ манипуляции Π΄Π°Π΄ΡƒΡ‚ прСимущСство.

Π‘Π½ΠΎΠ²Π° повторяСтся история с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ: Π½Π΅ стоит ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ исходны ΠΊΠΎΠ΄, подстраивая Π΅Π³ΠΎ ΠΏΠΎΠ΄ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. ΠŸΡƒΡΡ‚ΡŒ этим Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ браузСростроитСли.

Π― ΠΊ Ρ‡Π΅ΠΌΡƒ Π²Π΅Π΄Ρƒ: смысла Π² особой ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π΅Ρ‚. Π‘Π°ΠΌΡ‹ΠΉ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ понятным. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с DOM.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ node.js прилоТСния

Π”Π°Π½ΠΎ: староС http node.js ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·Ρ€ΠΎΡΡˆΠ°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° Π½Π΅Π³ΠΎ.
Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: Π΄ΠΎΠΊΠΈΠ½ΡƒΡ‚ΡŒ сСрвСров, всС ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ с 0, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ написанноС.
Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠΉΡ‚ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ слабыС мСста прилоТСния. А Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒΡΡ Π½Π΅ трогая Π½ΠΈ строчки ΠΊΠΎΠ΄Π° πŸ™‚

ВсСх заинтСрСсованных Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚!

Для Π½Π°Ρ‡Π°Π»Π° опрСдСлимся с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΎΠΉ тСстирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
Нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ количСство обслуТСнных запросов Π·Π° 1 сСкунду: rps.
Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 1 Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° (1 процСсса), замСряя ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ старого ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠ΄Π° с оптимизациями β€” Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Π²Π°ΠΆΠ½Π°, Π²Π°ΠΆΠ½Π° ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.


Π’ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ с мноТСствами Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€ΠΎΡƒΡ‚ΠΎΠ² Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ сначала Π½Π°ΠΉΡ‚ΠΈ самыС Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ запросы, Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тратится большая Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π£Ρ‚ΠΈΠ»Ρ‹ Π²ΠΈΠ΄Π° request-log-analizer ΠΈΠ»ΠΈ мноТСство ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… позволят ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π»ΠΎΠ³ΠΎΠ².
Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ список запросов ΠΈ ΠΏΡƒΠ»ΡΡ‚ΡŒ ΠΈΡ… всС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ yandex-tank-Π°) β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ достовСрный ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
Но дСлая мноТСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΊΡƒΠ΄Π° ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ простой ΠΈ быстрый инструмСнт ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ запросов (Π° послС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ, ΠΈ Ρ‚.Π΄.). Мой Π²Ρ‹Π±ΠΎΡ€ β€” wrk. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Ρ‚ΠΎ Π² ΠΌΠΎΠ΅ΠΌ случаС количСство Ρ€ΠΎΡƒΡ‚ΠΎΠ² Π½Π΅ Π²Π΅Π»ΠΈΠΊΠΎ β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ всС ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π΅ слоТно.

Π‘Ρ€Π°Π·Ρƒ Π½Π°Π΄ΠΎ оговорится, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ»Π°Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… запросов, оТидания Π‘Π” ΠΈ Ρ‚.ΠΏ. ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, всС упираСтся Π² cpu: ΠΏΡ€ΠΈ тСстах Π²ΠΎΡ€ΠΊΠ΅Ρ€ потрСбляСт 100% cpu.

На ΠΏΡ€ΠΎΠ΄Π°ΡˆΠ΅Π½ сСрвСрах ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ node.js вСрсии 6 β€” с Π½Π΅Ρ‘ ΠΈ Π½Π°Ρ‡Π½Π΅ΠΌ:
Requests/sec: 1210

ΠŸΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π° 8ΠΉ Π½ΠΎΠ΄Π΅:
Requests/sec: 2308
10я нода:
Requests/sec: 2590

Π Π°Π·Π½ΠΈΡ†Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°. ΠšΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Ρ‚ΡƒΡ‚ ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ вСрсии v8 β€” мноТСство ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎΡΡ v8 ΠΊΠΎΠ΄Π° ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ. И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ с вСтряными ΠΌΠ΅Π»ΡŒΠ½ΠΈΡ†Π°ΠΌΠΈ ΠΈΡΡ‡Π΅Π·Π½ΡƒΠ²ΡˆΠΈΠΌΠΈ Π² node.js v8 β€” Π»ΡƒΡ‡ΡˆΠ΅ сразу ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ собствСнно ΠΊ поиску ΡƒΠ·ΠΊΠΈΡ… мСст: Π½Π° ΠΌΠΎΠΉ взгляд, Π»ΡƒΡ‡ΡˆΠΈΠΉ инструмСнт для этого β€” flamegraph. И с появлСниСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° 0x ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ flamegraph стало ΠΎΡ‡Π΅Π½ΡŒ просто β€” запускам 0x вмСсто node: 0x -o ваш_скрип.js, Π΄Π΅Π»Π°Π΅ΠΌ тСст, останавливаСм скрипт, смотрим Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ выглядит flamegraph тСстируСмого ΠΊΠΎΠ΄Π° Π΄ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ:

Π’Π½ΠΈΠ·Ρƒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, оставляСм app, deps β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ прилоТСния ΠΈ сторонних ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π§Π΅ΠΌ ΡˆΠΈΡ€Π΅ полоска β€” Ρ‚Π΅ΠΌ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½ΠΎ Π½Π° выполнСния этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹).

Π Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅ΠΌ с Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ, самой большой Ρ‡Π°ΡΡ‚ΡŒΡŽ.
Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ подсвСчиваСм Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ мСня Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… нашлось Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ.
Π”Π°Π»Π΅Π΅, Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡ‚Ρ€ΠΎΠΈΠ»ΠΈΡΡŒ Π³ΠΎΡ€ΠΊΠΎΠΉ с ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒΠΊΠ°ΠΌΠΈ β€” каТдая функция Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ долю Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, явного Π»ΠΈΠ΄Π΅Ρ€Π° Π½Π΅Ρ‚.

Π”Π°Π»ΡŒΡˆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ простой Π°Π»Π³ΠΎΠ³Ρ€ΠΈΡ‚ΠΌ дСйствий: ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ самыС ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, пСрСходя ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Но я Π²Ρ‹Π±Ρ€Π°Π» Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ начиная ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° Π² прилоТСния (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ запроса Π² http.createServer). Π’ ΠΊΠΎΠ½Ρ†Π΅ исслСдуСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вмСсто Π²Ρ‹Π·ΠΎΠ²Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ я Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ запроса, отвСчая ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ-ΠΏΡƒΡΡ‚Ρ‹ΡˆΠΊΠΎΠΉ, ΠΈ ΠΈΠ·ΡƒΡ‡Π°ΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ПослС Π΅Ρ‘ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚-ΠΏΡƒΡΡ‚Ρ‹ΡˆΠΊΠ° пСрСмСщаСтся дальшС ΠΏΠΎ стСку Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚.Π΄.

Π£Π΄ΠΎΠ±Π½ΠΎΠ΅ слСдствиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°: ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ rps Π² ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях (ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ стартовой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ rps Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ rps-Ρƒ hellow world node.js прилоТСния), ΠΈ ΠΏΡ€ΠΈ дальнСйшСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ-ΠΎΡ‚Π²Π΅Ρ‚Π° Π²Π³Π»ΡƒΠ±ΡŒ прилоТСния Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄ исслСдуСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² rps-Π°Ρ….

Π˜Ρ‚Π°ΠΊ, оставляСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:
Requests/sec:

16176

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ core, v8 ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ практичСски вся исслСдуСмая функция состоит ΠΈΠ· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°, логгирования ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… слабо ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ β€” Π΅Π΄Π΅ΠΌ дальшС.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
Requests/sec: 16111
НичСго Π½Π΅ измСнилось β€” погруТаСмся дальшС:
Requests/sec: 13330

Наш ΠΊΠ»ΠΈΠ΅Π½Ρ‚! Π’ΠΈΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ задСйствованная функция getByUrl Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΠΌΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ стартовой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ с просСданиСм rps.
Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ происходит (Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ core, v8):

ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ происходит… ΠΊΡƒΡ€ΠΈΠΌ ΠΊΠΎΠ΄, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ:

for (var i in this.data) {
  if (this[i]._options.regexp_obj.test(url)) return this[i];
}
return null;

ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π²
let result = null;
for (let i=0; i<this.length && !result; i++) {
  if (this[i]._options.regexp_obj.test(url)) result = this[i];
}

И ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ
Requests/sec: 16015

Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ функция Β«ΡΠ΄ΡƒΠ»Π°ΡΡŒΒ» ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ долю ΠΎΡ‚ стартовой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
Π’ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ всС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΠ»ΠΎΡΡŒ:

ИдСм дальшС, ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
Requests/sec: 13316

Π’ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ array Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ, нСсмотря Π½Π° сущСствСнноС ускорСниС Π² послСдних вСрсиях node.

js, ΠΎΠ½ΠΈ всС Π΅Ρ‰Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅ΠΉ простых Ρ†ΠΈΠΊΠ»ΠΎΠ²: мСняСм [].map ΠΈ filter. Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ for ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ
Requests/sec: 15067

И Ρ‚Π°ΠΊ Ρ€Π°Π· Π·Π° Ρ€Π°Π·ΠΎΠΌ, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
Π•Ρ‰Π΅ нСсколько ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΠ²ΡˆΠΈΡ…ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ: для Ρ…Π΅ΡˆΠ΅ΠΉ с динамичСски измСняСмым Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ new Map() ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π° 40% быстрСС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ {};
Math.round(el*100)/100 Π² 2 Ρ€Π°Π·Π° быстрСС Ρ‡Π΅ΠΌ toFixed(2).
Π’ flamegraph-Π΅ для core ΠΈ v8 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΈ малопонятныС записи, Ρ‚Π°ΠΊ ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ говорящиС StringPrototypeSplit ΠΈΠ»ΠΈ v8::internal::Runtime_StringToNumber, ΠΈ, Ссли это значимая Ρ‡Π°ΡΡ‚ΡŒ выполнСния ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ просто ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
НапримСр, Π·Π°ΠΌΠ΅Π½Π° split Π½Π° нСсколько Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² indexOf ΠΈ substring ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ большая ΠΈ слоТная Ρ‚Π΅ΠΌΠ° β€” jit оптимизация, Π° Π²Π΅Ρ€Π½Π΅Π΅ Π΄Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ большой Π΄ΠΎΠ»ΠΈ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΈ с Π½ΠΈΠΌΠΈ.
Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π΄ΡƒΠΌΡ‡ΠΈΠ²ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° node —trace_file_names —trace_opt_verbose —trace-deopt —trace_opt

НапримСр, строчки Π²ΠΈΠ΄Π°
deoptimizing (DEOPT soft): begin 0x2bcf38b2d079 <JSFunction getTime… Insufficient type feedback for binary operation ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ строчкС
return val >= 10? val: ‘0’+val;
Π—Π°ΠΌΠ΅Π½Π° Π½Π°
return (val >= 10? »: ‘0’)+val;
исправила ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.

Для старого v8 Π΄Π²ΠΈΠΆΠΊΠ° Π΅ΡΡ‚ΡŒ достаточно ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ ΠΈ способах Π±ΠΎΡ€ΡŒΠ±Ρ‹ с Π΄Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:
github.com/P0lip/v8-deoptimize-reasons β€” список,
www.netguru.co/blog/tracing-patterns-hinder-performance β€” Ρ€Π°Π·Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½,
www.html5rocks.com/en/tutorials/speed/v8 β€” ΠΏΡ€ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ для v8, Π΄ΡƒΠΌΠ°ΡŽ справСдливо ΠΈ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° v8.
Но ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΡƒΠΆΠ΅ Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ для Π½ΠΎΠ²ΠΎΠ³ΠΎ v8.

Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, послС всСх ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Requests/sec: 9971, Ρ‚.Π΅. ускорится ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 2 Ρ€Π°Π·Π° Π·Π° счСт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΡΠ²Π΅ΠΆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ node. js, ΠΈ Π΅Ρ‰Π΅ Π² 4 Ρ€Π°Π·Π° Π·Π° счСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°.
НадСюсь, этот ΠΎΠΏΡ‹Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Π΅.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ скриптов ΠΈ стилСй сайта

Частая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сайтов — это мноТСство Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ пСриодичСски я встрСчал ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ эти Ρ„Π°ΠΉΠ»Ρ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ использовались. Они просто Π²ΠΏΡƒΡΡ‚ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠΆΠ°Π»ΠΈ сайт. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ скриптах (.js) ΠΈ стилях (.css).

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ js скриптов

Π‘Ρ€Π°Π·Ρƒ скаТу, Ρ‡Ρ‚ΠΎ оптимизация Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ сайта. НС Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈΡˆΠ°Ρ‚ΡŒ сСбя ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… сСрвисов, Ρ‚ΠΈΠΏΠ° Π²Π΅Π±-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-Ρ‡Π°Ρ‚Π°.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π»ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΉ скрипт Π½Π° сайтС. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π»ΠΈ скрипты Π½Π° всСх страницах ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ/Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ…. Если ΠΏΠ°Ρ€Π° скриптов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС, Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π½Π° всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… страницах сайта. Π’ любой CMS ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько шаблонов Ρ€Π°Π·Π΄Π΅Π»Π° head, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ списком ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ скрипты Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅, Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½ΡƒΠΆΠ½Ρ‹Ρ… страницах. Π”Π°Π»Π΅Π΅ смотрим Π²Π½ΡƒΡ‚Ρ€ΠΈ этих Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘ΠΆΠ°Ρ‚ Π»ΠΈ Ρ‚Π°ΠΌ ΠΊΠΎΠ΄? Если Π½Π΅Ρ‚, Ρ‚ΠΎ простоС сокращСниС Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… символов ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ дСсятки ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚. МоТно это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, https://jscompress.com/), Π° ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ ΠΊΠΎΠ΄ всСх ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… js Ρ„Π°ΠΉΠ»ΠΎΠ² автоматичСски (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Modx это MinifyX).

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ этап ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ мСсто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ js Ρ„Π°ΠΉΠ»ΠΎΠ². Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ Π² шаблонС сайта ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ скриптов, Ρ‚Π΅ΠΌ сильнСС ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ основного ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° сайта. НС всСм скриптам ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ head, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π² самый ΠΊΠΎΠ½Π΅Ρ† Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Ρ‚Π΅Π³ΠΎΠΌ body.

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΡ‘ΠΌ — это использованиС асинхронной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ скриптов, которая Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² сайта. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π½Π΅ всС скрипты ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

<script async src="/ΠΏΡƒΡ‚ΡŒ-ΠΊ-Ρ„Π°ΠΉΠ»Ρƒ.js"></script>

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ скрипт загруТаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ запроса. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ мСньшС запросов, Ρ‚Π΅ΠΌ быстрСС ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° всСх Ρ„Π°ΠΉΠ»ΠΎΠ². БоотвСтствСнно, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ всС скрипты Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ скрипты ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ: Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠΌ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ head ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΈ скрипты Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ асинхронно ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ПослС объСдинСния Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ€Π° скриптов вмСсто ΠΏΠ°Ρ€Ρ‹ дСсятков.

Π’Π°ΠΆΠ½ΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ объСдинСния. Если Ρƒ вас jquery ΠΏΠ»Π°Π³ΠΈΠ½, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄Ρ‚ΠΈ послС самого jquery. ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ это автоматичСски (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Modx это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ MinifyX).

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ css стилСй

Π’Π°ΠΊΠΆΠ΅ сначала провСряСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… стилСй. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚ΠΈΠΏΠ° Bootstrap, Ρ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ стили, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Π΅ΠΌ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ css Ρ„Π°ΠΉΠ»ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ js:

  • Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ стили Π½Π° Π½ΡƒΠΆΠ½Ρ‹Ρ… страницах
  • Π‘ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠΎΠ΄
  • ОбъСдиняСм Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»

МоТно Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ самыС Π²Π°ΠΆΠ½Ρ‹Π΅ стили (описаниС 10-100 самых Π±Π°Π·ΠΎΠ²Ρ‹Ρ… элСмСнтов) ΠΈ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… (inline) Π² ΠΊΠΎΠ΄ страницы. Google Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ для ускорСния прорисовки шаблона/структуры страницы.

ВсС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ css стилСй Ρ‚Π°ΠΊΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².

Π’Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ дСйствия ΠΌΠΎΠ³ΡƒΡ‚ сущСствСнно ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ страниц. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Ρ‚Π΅ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° количСство запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сайта ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π° нСсколько дСсятков. ΠžΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ всСх js ΠΈ css Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² нСсколько Ρ€Π°Π· послС сТатия.

К соТалСнию, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ CMS (WordPress, Битрикс) ΠΈΠ΄ΡƒΡ‚ с шаблонами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ сдСланы Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ хотят Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ваш сайт. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ js ΠΈ css Ρ„Π°ΠΉΠ»Ρ‹ — это ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ этап Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ скорости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сайта.

Автор: АлСксандр Π”Π΅Ρ€Π³ΡƒΠ½ΠΎΠ²
Π”Π°Ρ‚Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ: 29.12.2019 Π³.

Как ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ CSS- ΠΈ JS-Ρ„Π°ΠΉΠ»Ρ‹ Π² WordPress?

πŸ‘ Научим ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сайты Π½Π° WordPress бСсплатно Π·Π° 11 ΡƒΡ€ΠΎΠΊΠΎΠ². ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ β†’

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ соврСмСнный Π²Π΅Π±-сайт для своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ CSS- ΠΈ JS-Ρ„Π°ΠΉΠ»Ρ‹. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для построСния Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ внСшнСго Π²ΠΈΠ΄Π°, Π° JS – это JavaScript-скрипты, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°.

Для Ρ‡Π΅Π³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ CSS- ΠΈ JS-Ρ„Π°ΠΉΠ»Ρ‹?

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (увСличСния скорости) Ρ€Π°Π±ΠΎΡ‚Ρ‹ сайта Π²Π΅Π±-мастСра ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠ±Π΅ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π½Π° сайтС ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ нСсколько Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ процСссС ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ сайтостроСния Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Π° тСхнология ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, которая позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² скриптов Π·Π° счСт удалСния Π² Π½ΠΈΡ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², пСрСносов строк.

Π’ арсСналС WordPress имССтся мноТСство бСсплатных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… эту Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ. Одним ΠΈΡ… Ρ‚Π°ΠΊΠΈΡ… Π΅ΡΡ‚ΡŒ AssetsMinify.

Плагин AssetsMinify

ПослС установки ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ WordPress появляСтся страница настроСк ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Настройки -> AssetsMinify.

Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ основныС настройки. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ»Π°Π³ΠΈΠ½Π° слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΠΎΠΉ ΠΏΡƒΠ½ΠΊΡ‚ Use Compass. Π”Π°Π»ΡŒΡˆΠ΅ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ стилСй Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ Compress styles, Π° для скриптов – Compress scripts. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом ΠΈΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Π° Async attribute on footer’s script tag, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π° Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ², которая позволяСт Π’Π°ΡˆΠ΅ΠΌΡƒ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ основной ΠΊΠΎΠ΄ страницы, Π½Π΅ доТидаясь Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ css- ΠΈ js-скриптов.

ПослС выставлСния всСх настроСк Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Save. Π’ ΠΈΡ‚ΠΎΠ³Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ страницам Π’Π°ΡˆΠ΅Π³ΠΎ сайта, скрипты ΠΈ стили Π±ΡƒΠ΄ΡƒΡ‚ загруТатся Π² ΡƒΠΆΠ΅ сТатом Π²ΠΈΠ΄Π΅, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ довольно сильно ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ сайта Π² Ρ†Π΅Π»ΠΎΠΌ.

НаТмитС, поТалуйста, Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

МнС нравитсяНС нравится

Если Π’Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ β€” ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ – React

React ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько ΡƒΠΌΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ количСства дорогостоящих DOM-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для обновлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, использованиС React ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ к быстрому ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ интСрфСйсу Π±Π΅Π· особых усилий ΠΏΠΎΒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’Π΅ΠΌ Π½Π΅Β ΠΌΠ΅Π½Π΅Π΅, сущСствуСт нСсколько способов ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ИспользованиС ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки

Если вы испытываСтС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡΒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π²Β React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π²Β Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Β ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ тСсты с настройками ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки.

ΠŸΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Β React Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’Π΅ΠΌ Π½Π΅Β ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ React большС ΠΈΒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, поэтому Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ прилоТСния.

Если Π²Ρ‹Β Π½Π΅Β ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π²Β Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ процСсс сборки настроСн ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это, установив React Developer Tools for Chrome. Если вы посСтитС сайт, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π°Β React Π²Β ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΈΠΊΠΎΠ½ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ с чёрным Ρ„ΠΎΠ½ΠΎΠΌ:

Если вы посСтитС сайт с React Π²Β Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΡƒΒ ΠΈΠΊΠΎΠ½ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ красный Ρ„ΠΎΠ½:

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ во врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π°Β ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-Ρ€Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ прилоТСния для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

НиТС Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ по сборкС своСго прилоТСния для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°.

Create React App

Если ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ сдСлан ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Create React App, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборку вашСго прилоТСния Π²Β ΠΏΠ°ΠΏΠΊΠ΅ build/ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ Π½Π°Β ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½. Для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ npm start.

ΠžΠ΄Π½ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ сборки

ΠœΡ‹Β ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π° вСрсии React ΠΈΒ React DOM Π²Β Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²:

<script src="https://unpkg. com/react@17/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π° подходят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Β Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π°Β .production.min.js.

Brunch

Для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивной ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки с Brunch, установитС ΠΏΠ»Π°Π³ΠΈΠ½ terser-brunch.

# Π’ случаС использования npm
npm install --save-dev terser-brunch

# Π’ случаС использования Yarn
yarn add --dev terser-brunch

Π—Π°Ρ‚Π΅ΠΌ, для создания ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ сборки, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π»Π°Π³ -p ΠΊΒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ build:

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки. Π’Π°ΠΌ Π½Π΅Β Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ -p ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ этот ΠΏΠ»Π°Π³ΠΈΠ½ во врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это скроСт Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСдупрСТдСния React ΠΈΒ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ процСсс сборки.

Browserify

Для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивной ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки с Browserify, установитС нСсколько ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²:

# Π’ случаС использования npm
npm install --save-dev envify terser uglifyify

# Π’ случаС использования Yarn
yarn add --dev envify terser uglifyify

ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Β Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ эти ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для прСобразования (порядок ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅):

  • Плагин envify обСспСчиваСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ срСду для сборки. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ (-g).
  • Плагин uglifyify удаляСт ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ (-g).
  • НаконСц, получСнная сборка отправляСтся ΠΊΒ terser для ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ (ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅, Π·Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ).

ΠšΒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

browserify ./index.js \
  -g [ envify --NODE_ENV production ] \
  -g uglifyify \
  | terser --compress --mangle > ./bundle.js

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки. Π’Π°ΠΌ нС слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ в процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это скроСт Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСдупрСТдСния React ΠΈΒ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ процСсс сборки.

Rollup

Для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивной ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки с Rollup, установитС нСсколько ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²:


npm install --save-dev rollup-plugin-commonjs rollup-plugin-replace rollup-plugin-terser


yarn add --dev rollup-plugin-commonjs rollup-plugin-replace rollup-plugin-terser

ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Β Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ эти ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ (порядок ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅):

  • Плагин replace обСспСчиваСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ срСду для сборки.
  • Плагин commonjs обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ CommonJS Π²Β Rollup.
  • Плагин terser сТимаСт ΠΈΒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ сборку.
plugins: [
  
  require('rollup-plugin-replace')({
    'process.env.NODE_ENV': JSON.stringify('production')
  }),
  require('rollup-plugin-commonjs')(),
  require('rollup-plugin-terser')(),
  
]

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ настройки ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки. Π’Π°ΠΌ нС слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ terser ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ replace со значСниСм 'production' в процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это скроСт Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСдупрСТдСния React ΠΈΒ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ процСсс сборки.

webpack

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Если Π²Ρ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Create React App, поТалуйста, слСдуйтС инструкциям Π²Ρ‹ΡˆΠ΅.
Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ настраиваСт webpack.

Webpack 4.0 ΠΈΒ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Π²Β ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-Ρ€Π΅ΠΆΠΈΠΌΠ΅.

const TerserPlugin = require('terser-webpack-plugin');

module.exports = {
  mode: 'production',
  optimization: {
    minimizer: [new TerserPlugin({  })],
  },
};

Π’Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ об этом большС Π²Β Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ webpack.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборки. Π’Π°ΠΌ нС стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TerserPlugin в процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° ΡΠΊΡ€ΠΎΡŽΡ‚ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСдупрСТдСния React и замСдлится процСсс сборки.

Анализ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Chrome Β«PerformanceΒ»

Π’Β Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΒ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Β Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ…Β ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚. НапримСр:

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π²Β Chrome:

  1. Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ всС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Chrome, особСнно React DevTools. Они ΠΌΠΎΠ³ΡƒΡ‚ сущСствСнно ΠΈΡΠΊΠ°Π·ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹!
  2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ вы запускаСтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Β Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
  3. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ в инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Chrome Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Performance ΠΈΒ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Record.
  4. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Β ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. НС записывайтС Π±ΠΎΠ»Π΅Π΅ 20 сСкунд, ΠΈΠ½Π°Ρ‡Π΅ Chrome ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ½ΡƒΡ‚ΡŒ.
  5. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ запись.
  6. Бобытия React Π±ΡƒΠ΄ΡƒΡ‚ сгруппированы ΠΏΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ User Timing.

Для Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ознакомлСния, посмотритС эту ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎΡ‚Β Π‘Π΅Π½Π° Π¨Π²Π°Ρ€Ρ†Π° (Ben Schwarz).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΒ Π²Β ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ быстрСС. Всё ТС это Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ обновляСтся по ошибкС, Π°Β Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ и часто обновляСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс.

В настоящСС врСмя Chrome, Edge ΠΈΒ IE СдинствСнныС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄Π°Π½Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎΒ ΠΌΡ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ стандарт User Timing API, поэтому ΠΎΠΆΠΈΠ΄Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ большС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² добавят Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ react-dom вСрсии 16.5+ ΠΈΒ react-native вСрсии 0.57+ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Β Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° React Profiler. ΠžΠ±Π·ΠΎΡ€ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ в постС Π±Π»ΠΎΠ³Π° Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²Β React ProfilerΒ». ПошаговоС Π²ΠΈΠ΄Π΅ΠΎ-руководство Ρ‚Π°ΠΊΠΆΠ΅ доступно Π½Π°Β YouTube.

Если Π²Ρ‹Β Π΅Ρ‰Ρ‘ нС установили инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° React, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ…Β Π·Π΄Π΅ΡΡŒ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-ΠΏΠ°ΠΊΠ΅Ρ‚Π° для react-dom Ρ‚Π°ΠΊΠΆΠ΅ доступно ΠΊΠ°ΠΊ react-dom/profiling. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΒ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΠ°ΠΊΠ΅Ρ‚, Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π½Π°Β fb.me/react-profiling

Виртуализация Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… списков

Если вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ списки Π΄Π°Π½Π½Ρ‹Ρ… (сотни ΠΈΠ»ΠΈ тысячи строк), ΠΌΡ‹Β Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ извСстный ΠΊΠ°ΠΊ Β«ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ доступ». Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСбольшоС подмноТСство строк Π²Β Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π°Β Ρ‚Π°ΠΊΠΆΠ΅ количСство создаваСмых DOM-ΡƒΠ·Π»ΠΎΠ².

react-window ΠΈΒ react-virtualizedΒ β€” это популярныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ доступа. Они ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ нСсколько ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для отобраТСния списков, сСток ΠΈΒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Если Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ спСцифичСскоС для вашСго ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ случая, Ρ‚ΠΎΒ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ с оконным доступом, ΠΊΠ°ΠΊ это сдСлано Π²Β Twitter.

ИзбСТаниС согласования

React создаёт ΠΈΒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Оно Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ React-элСмСнты Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ·Β Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ прСдставлСниС позволяСт React ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ создания DOM-ΡƒΠ·Π»ΠΎΠ² ΠΈΒ Π½Π΅Β ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π±Π΅Π· нСобходимости, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с JavaScript-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Иногда Π΅Π³ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ DOMΒ», Π½ΠΎΒ Π²Β React Native это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΒ ΠΆΠ΅.

Когда ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ пропсы ΠΈΠ»ΠΈ состояниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, React Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎΒ Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ DOM, сравнивая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ элСмСнт с ранСС ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ. Если ΠΎΠ½ΠΈ Π½Π΅Β Ρ€Π°Π²Π½Ρ‹, React ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ DOM.

НСсмотря Π½Π°Β Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ React обновляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅ DOM-ΡƒΠ·Π»Ρ‹, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ всё ТС Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя. Π’Β Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв это Π½Π΅Β ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, но Ссли Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ, Ρ‚ΠΎΒ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ всё ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° shouldComponentUpdate, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ процСсса Ρ€Π΅Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°. РСализация этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, указывая React Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅:

shouldComponentUpdate(nextProps, nextState) {
  return true;
}

Если Π²Ρ‹Β Π·Π½Π°Π΅Ρ‚Π΅ ситуации, Π²Β ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ваш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ нС нуТдаСтся Π²Β ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ false ΠΈΠ·Β shouldComponentUpdate, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ вСсь процСсс Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Ρ‹Π·ΠΎΠ² render() ΠΈΒ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

Π’Β Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ shouldComponentUpdate() Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Β React.PureComponent. Π­Ρ‚ΠΎ эквивалСнтно Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ shouldComponentUpdate() с повСрхностным сравнСниСм Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… ΠΈΒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… пропсов и состояния.

shouldComponentUpdate в дСйствии

Π’ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·Β Π½ΠΈΡ… SCU ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠ» shouldComponentUpdate, Π°Β vDOMEq ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ эквивалСнтны ли ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ React элСмСнты. НаконСц, Ρ†Π²Π΅Ρ‚ ΠΊΡ€ΡƒΠ³Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ трСбуСтся ли ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠ»ΠΈΒ Π½Π΅Ρ‚.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ shouldComponentUpdate Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠ» false для ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π° с корнСм C2, React нС пытался ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ C2, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Β Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ shouldComponentUpdate Π½Π°Β C4 ΠΈΒ C5.

Для C1 ΠΈΒ C3 shouldComponentUpdate Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠ» true, поэтому React ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ ΠΊΒ Π»ΠΈΡΡ‚ΡŒΡΠΌ ΠΈΒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΒ ΠΈΡ…. Для C6 shouldComponentUpdate Π²Π΅Ρ€Π½ΡƒΠ» true, ΠΈΒ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ элСмСнты Π½Π΅Β Π±Ρ‹Π»ΠΈ эквивалСнтны, React Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ DOM.

ПослСдний интСрСсный случай — C8. React Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½ΠΎΒ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΈΠΌΒ React-элСмСнты Π±Ρ‹Π»ΠΈ Ρ€Π°Π²Π½Ρ‹ Ρ€Π°Π½Π΅Π΅ прСдоставлСнным, Π΅ΠΌΡƒ Π½Π΅Β Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ DOM.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ React Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π΄Π΅Π»Π°Ρ‚ΡŒ измСнСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для C6. Для C8 этого ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ сравнСниСм ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… React-элСмСнтов, а для ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² C2 ΠΈΒ C7 Π΄Π°ΠΆΠ΅ Π½Π΅Β ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ элСмСнты, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ нас Π²Ρ‹Ρ€ΡƒΡ‡ΠΈΠ» shouldComponentUpdate ΠΈΒ render Π½Π΅Β Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Если СдинствСнный случай измСнСния вашСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° это ΠΊΠΎΠ³Π΄Π° пСрСмСнная props.color ΠΈΠ»ΠΈ state.count ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Π²Ρ‹Β ΠΌΠΎΠ³Π»ΠΈΒ Π±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π²Β shouldComponentUpdate ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

class CounterButton extends React.Component {
  constructor(props) {
    super(props);
    this.state = {count: 1};
  }

  shouldComponentUpdate(nextProps, nextState) {
    if (this.props.color !== nextProps.color) {
      return true;
    }
    if (this. state.count !== nextState.count) {
      return true;
    }
    return false;
  }

  render() {
    return (
      <button
        color={this.props.color}
        onClick={() => this.setState(state => ({count: state.count + 1}))}>
        Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ: {this.state.count}
      </button>
    );
  }
}

В этом ΠΊΠΎΠ΄Π΅ shouldComponentUpdateΒ β€” это простая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π°Β Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Β props.color ΠΈΠ»ΠΈ state.count. Если эти значСния Π½Π΅Β ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Ρ‚ΠΎΒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ нС обновляСтся. Если ваш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ стал Π±ΠΎΠ»Π΅Π΅ слоТным, Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ «повСрхностного сравнСния» ΠΌΠ΅ΠΆΠ΄Ρƒ всСми полями props ΠΈΒ state, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½Β Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ достаточно распространён, поэтому React прСдоставляСт Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ним — просто Π½Π°ΡΠ»Π΅Π΄ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΎΡ‚Β React.PureComponent. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄Β β€” это Π±ΠΎΠ»Π΅Π΅ простой способ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎΒ ΠΆΠ΅ самого эффСкта:

class CounterButton extends React. PureComponent {
  constructor(props) {
    super(props);
    this.state = {count: 1};
  }

  render() {
    return (
      <button
        color={this.props.color}
        onClick={() => this.setState(state => ({count: state.count + 1}))}>
        Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ: {this.state.count}
      </button>
    );
  }
}

Π’Β Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React.PureComponent вмСсто написания собствСнного shouldComponentUpdate. Но он дСлаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ повСрхностноС сравнСниС, поэтому Π΅Π³ΠΎ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли пропсы и состояниС ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нС смоТСт Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΏΡ€ΠΈ повСрхностном сравнСнии.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ для Π±ΠΎΠ»Π΅Π΅ слоТных структур Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Π²Ρ‹Β Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ListOfWords ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π» список слов, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, ΡΒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ WordAdder, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π°Β ΠΊΠ½ΠΎΠΏΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ слово в список. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ:

class ListOfWords extends React. PureComponent {
  render() {
    return <div>{this.props.words.join(',')}</div>;
  }
}

class WordAdder extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      words: ['словцо']
    };
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    
    const words = this.state.words;
    words.push('словцо');
    this.setState({words: words});
  }

  render() {
    return (
      <div>
        <button onClick={this.handleClick} />
        <ListOfWords words={this.state.words} />
      </div>
    );
  }
}

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Β Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ PureComponent сдСлаСт сравнСниС по ссылкС ΠΌΠ΅ΠΆΠ΄Ρƒ старыми ΠΈΒ Π½ΠΎΠ²Ρ‹ΠΌΠΈ значСниями this.props.words. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΊΠΎΠ΄ ΠΌΡƒΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ массив words Π²Β ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ handleClick ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° WordAdder, старыС ΠΈΒ Π½ΠΎΠ²Ρ‹Π΅ значСния this.props.words ΠΏΡ€ΠΈ сравнСнии по ссылкС Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹, Π΄Π°ΠΆΠ΅ Ссли слова в массивС измСнились. ListOfWords Π½Π΅Β Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ, Π΄Π°ΠΆΠ΅ Ссли он содСрТит Π½ΠΎΠ²Ρ‹Π΅ слова, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Ρ‹.

Π‘ΠΈΠ»Π° ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹Β β€” ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ мутирования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°ΠΊ свойства ΠΈΠ»ΠΈ состояниС. ΠšΒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, описанный Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ handleClick ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ concat ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

handleClick() {
  this.setState(state => ({
    words: state.words.concat(['словцо'])
  }));
}

ES6 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ синтаксис Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для массивов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€ΠΎΡ‰Π΅. Если Π²Ρ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Create React App, то этот синтаксис доступСн Ρ‚Π°ΠΌ ΠΏΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

handleClick() {
  this.setState(state => ({
    words: [...state.words, 'словцо'],
  }));
};

Π’Π°ΠΊΠΈΠΌΒ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡƒΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠšΒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΡ‹Β ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с имСнСм colormap ΠΈΒ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая измСняСт colormap. right Π½Π°Β 'blue'. ΠœΡ‹Β ΠΌΠΎΠ³Π»ΠΈΒ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

function updateColorMap(colormap) {
  colormap.right = 'blue';
}

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ это Π±Π΅Π· мутирования исходного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΡ‹Β ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Object.assign:

function updateColorMap(colormap) {
  return Object.assign({}, colormap, {right: 'blue'});
}

Ѐункция updateColorMap Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡƒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный. ΠœΠ΅Ρ‚ΠΎΠ΄ Object.assign Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π²Β ES6 ΠΈΒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π°.

Бинтаксис Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π΅Π· ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΉ:

function updateColorMap(colormap) {
  return {...colormap, right: 'blue'};
}

Π­Ρ‚ΠΎΡ‚ синтаксис Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π²Β JavaScript Π²Β ES2018.

Если Π²Ρ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Create React App, Ρ‚ΠΎΒ Object.assign и синтаксис Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² доступны Π²Π°ΠΌ ΠΏΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с глубоко Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, постоянноС ΠΈΡ…Β ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ. Если Π²Ρ‹Β ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с такой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°Β Immer ΠΈΠ»ΠΈ immutability-helper. Π­Ρ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄, нС тСряя прСимущСств ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ canvas — Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π²Π΅Π± API

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ <canvas> являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… инструмСнтов для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° 2D-Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. Однако ΠΊΠΎΠ³Π΄Π° Π²Π΅Π±-сайты ΠΈ прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚Β Canvas API Π½Π° ΠΏΡ€Π΅Π΄Π΅Π»Π΅ Π΅Π³ΠΎ возмоТностСй, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒΡΡ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ приводятся прСдлоТСния ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ использования элСмСнта canvas для обСспСчСния Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ сборник совСтов ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ canvas.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отрисуйтС ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° offscreen canvas

Если Π²Ρ‹ повторяСтС ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ рисования Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° offscreen canvas. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΠ°Π΄Ρ€ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° свой основной canvas Ρ‚Π°ΠΊ часто, ΠΊΠ°ΠΊ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π±Π΅Π· нСобходимости ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ шаги, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΅Π³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ.

myCanvas.offscreenCanvas = document.createElement('canvas');
myCanvas.offscreenCanvas.width = myCanvas.width;
myCanvas.offscreenCanvas.height = myCanvas.height;

myCanvas.getContext('2d').drawImage(myCanvas.offScreenCanvas, 0, 0);

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто Π½ΠΈΡ… Ρ†Π΅Π»Ρ‹Π΅ числа

Π‘ΡƒΠ±ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ происходит ΠΏΡ€ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° canvas Π±Π΅Π· Ρ†Π΅Π»Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ctx.drawImage(myImage, 0.3, 0.5);

Π­Ρ‚ΠΎ заставляСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния для создания эффСкта сглаТивания. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚Π΅ всС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π²Ρ‹Π·ΠΎΠ²Π°Ρ… drawImage(), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Math.floor().

НС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠΉΡ‚Π΅ изобраТСния Π²

drawImage

ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ изобраТСния Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π½Π° offscreen canvas, Π° Π½Π΅ постоянно ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡ… Π² drawImage().

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ нСсколько слоёв canvas для слоТных сцСн

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ часто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ статичными. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π² этой ситуации являСтся Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΡˆΠΈΡ… элСмСнтов с использованиСм Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов <canvas>.

НапримСр, допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΈΠ³Ρ€Π° с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом Π½Π°Π²Π΅Ρ€Ρ…Ρƒ, Π³Π΅ΠΉΠΌΠΏΠ»Π΅Π΅ΠΌ Π² сСрСдинС ΠΈ статичСским Ρ„ΠΎΠ½ΠΎΠΌ Π²Π½ΠΈΠ·Ρƒ. Π’ этом случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ свою ΠΈΠ³Ρ€Ρƒ Π½Π° Ρ‚Ρ€ΠΈ слоя <canvas>. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, слой с ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ процСссом Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π½ΠΎΠ²Ρ‹ΠΌ ΠΊΠ°Π΄Ρ€ΠΎΠΌ, Π° Ρ„ΠΎΠ½ останСтся Π² основном Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

<div>
  <canvas></canvas>
  <canvas></canvas>
  <canvas></canvas>
</div>

<style>
  #stage {
    width: 480px;
    height: 320px;
    position: relative;
    border: 2px solid black;
  }

  canvas { position: absolute; }
  #ui-layer { z-index: 3; }
  #game-layer { z-index: 2; }
  #background-layer { z-index: 1; }
</style>

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ простой CSS для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Если Ρƒ вас Π΅ΡΡ‚ΡŒ статичСскоС Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° простом элСмСнтС <div>, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свойство CSS background, ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ΄ canvas. Π­Ρ‚ΠΎ свСдёт Π½Π° Π½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Ρ„ΠΎΠ½Π° Π½Π° canvas Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ‚ΠΈΠΊΠ΅.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ холста с использованиСм CSS-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ

CSS-прСобразования быстрСС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ графичСский процСссор. Π’ ΠΈΠ΄Π΅Π°Π»Π΅, Π½Π΅ стоит Π½Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ canvas, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ мСньший canvas ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ нСобходимости, Π½ΠΎ Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ.

var scaleX = window.innerWidth / canvas.width;
var scaleY = window.innerHeight / canvas.height;

var scaleToFit = Math.min(scaleX, scaleY);
var scaleToCover = Math.max(scaleX, scaleY);

stage.style.transformOrigin = '0 0'; 
stage.style.transform = 'scale(' + scaleToFit + ')';

ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ

Если вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ canvas ΠΈ Π½Π΅ нуТдаСтся Π² ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΌ Ρ„ΠΎΠ½Π΅, установитС для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° alphaΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false ΠΏΡ€ΠΈ создании контСкста рисования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HTMLCanvasElement.getContext(). Π­Ρ‚Π° информация ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.

var ctx = canvas.getContext('2d', { alpha: false });

Π”Ρ€ΡƒΠ³ΠΈΠ΅ совСты

  • ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ запросы ΠΊ canvas. НапримСр, рисуйтС ΠΎΠ΄Π½Ρƒ Π»ΠΎΠΌΠ°Π½Π½ΡƒΡŽ линию вмСсто Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ.
  • Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ состояния canvas.
  • ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСнСния экрана, Π° Π½Π΅ Π·Π°Π½ΠΎΠ²ΠΎ пСрСрисовывайтС.
  • По возмоТности ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ свойства shadowBlur (en-US).
  • Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° тСкста, ΠΊΠΎΠ³Π΄Π° это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
  • ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ способы очистки canvas ((clearRect(), ΠΈΠ»ΠΈ fillRect(), ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° canvas).
  • Π‘ анимациями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ window.requestAnimationFrame() вмСсто window.setInterval() (en-US).
  • Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны с тяТёлыми физичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ запуска JavaScript | ΠžΡΠ½ΠΎΠ²Ρ‹ Π²Π΅Π±-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ

Eng ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠΎ связям с Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ создаСм сайты, Π² большСй стСпСни ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ JavaScript, ΠΌΡ‹ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠ»Π°Ρ‚ΠΈΠΌ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ посылаСм Π²Π½ΠΈΠ· способами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ всСгда Π»Π΅Π³ΠΊΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ нСбольшая дисциплина ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш сайт загруТался ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ быстро Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах. МСньшС JavaScript — Π·Π½Π°Ρ‡ΠΈΡ‚ мСньшС врСмя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎ сСти, мСньшС Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° распаковку ΠΊΠΎΠ΄Π° ΠΈ мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Π±ΠΎΡ€ ΠΈ компиляция этого JavaScript.

Π‘Π΅Ρ‚ΡŒ

Когда Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΡƒΠΌΠ°ΡŽΡ‚ ΠΎ стоимости JavaScript, ΠΎΠ½ΠΈ Π΄ΡƒΠΌΠ°ΡŽΡ‚ ΠΎΠ± этом Π² сроки Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ исполнСния . ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° большСго количСства Π±Π°ΠΉΡ‚ΠΎΠ² JavaScript ΠΏΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Ρƒ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ соСдинСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π΄Π°ΠΆΠ΅ Π² странах ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эффСктивная ΡΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ 3G, 4G ΠΈΠ»ΠΈ Wi-Fi. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Π½Π° кофСйня Wi-Fi, Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΊ сотовой Ρ‚ΠΎΡ‡ΠΊΠ΅ доступа со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 2G.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ сСтСвой ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ JavaScript Ρ‡Π΅Ρ€Π΅Π·:

  • Волько ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ .
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° для Π²Π·Π»ΠΎΠΌΠ° Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ Π² своСм JavaScript Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ, Π° Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚. Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° webpack расщСплСниС ΠΊΠΎΠ΄Π°.
    • ЛСнивая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
  • ΠœΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ
  • Π‘ΠΆΠ°Ρ‚ΠΈΠ΅
    • Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ gzip для сТатия тСкстовых рСсурсов.
    • РассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π‘Ρ€ΠΎΡ‚Π»ΠΈ ~ q11. Π‘Ρ€ΠΎΡ‚Π»ΠΈ прСвосходит gzip ΠΏΠΎ стСпСни сТатия. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ CertSimple ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ 17% ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° сТатых Π±Π°ΠΉΡ‚ΠΎΠ² JS ΠΈ сохранСния Π² LinkedIn 4% Π½Π° врСмя ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° .
  • Код ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ сСтСвых ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTTP ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ эффСктивно ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ врСмя ΠΆΠΈΠ·Π½ΠΈ для скриптов (max-age) ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ (ETag), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ².
    • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
    • Service Worker ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ΅Ρ‚ΡŒ вашСго прилоТСния устойчивой ΠΈ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΆΠ°Π΄Π½Ρ‹ΠΉ доступ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ функциям, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ V8 кСш.
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ долгосрочноС ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ. ΠŸΡ€ΠΈ использовании Webpack см. Имя Ρ„Π°ΠΉΠ»Π° Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

БинтаксичСский Π°Π½Π°Π»ΠΈΠ· / компиляция

ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚ JavaScript — это врСмя для JS engine для Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ / ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄. Π’ Chrome DevTools, синтаксичСский Π°Π½Π°Π»ΠΈΠ· ΠΈ компиляция ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΆΠ΅Π»Ρ‚ΠΎΠ³ΠΎ ВрСмя «написания сцСнария» Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Β«ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΒ».

Π’ΠΊΠ»Π°Π΄ΠΊΠΈ Bottom-Up ΠΈ Call Tree ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ врСмя синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° / компиляции:

Π₯Ρ€ΠΎΠΌ ПанСль DevTools Β«ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΒ»> Β«Π‘Π½ΠΈΠ·Ρƒ Π²Π²Π΅Ρ€Ρ…Β». ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ статистикС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² V8 ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ этапы, ΠΊΠ°ΠΊ Parse ΠΈ Compile. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для статистики Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π² настоящСС врСмя являСтся ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² chrome: // flags / # enable-devtools-tests -> пСрСзапуститС Chrome -> ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² DevTools -> Настройки -> ЭкспСримСнты -> Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Shift 6 Ρ€Π°Π· -> установитС Ρ„Π»Π°ΠΆΠΎΠΊ называСтся Timeline: V8 Runtime Call Stats on Timeline ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ снова ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ DevTools.

Но ΠΊΠ°ΠΊΠΎΠ΅ это ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?

Π—Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° синтаксичСский Π°Π½Π°Π»ΠΈΠ· / ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³ΡƒΡ‚ сильно Π·Π°Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎ, ΠΊΠ°ΠΊ скоро ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с вашим сайтом. Π§Π΅ΠΌ большС JavaScript Π²Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, Ρ‚Π΅ΠΌ дольшС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ваш сайт станСт ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ.

Π±Π°ΠΉΡ‚ΠΎΠ², JavaScript Π΄ΠΎΡ€ΠΎΠΆΠ΅ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ Π²Π΅Π±-ΡˆΡ€ΠΈΡ„Ρ‚ — Tom Dale

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с JavaScript, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚. изобраТСния ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (ΠΈΡ… всС Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ!), Π½ΠΎ Π² срСднСм Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния, JS с большСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ повлияСт Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ страницы.

JavaScript ΠΈ Π±Π°ΠΉΡ‚Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ основныС Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ интСрфСйсов Π²ΠΎ врСмя дСкодирования ΠΈ растСризованный. Однако JS ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈΠ·-Π·Π° синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°, компиляции ΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° исполнСниС.

Когда ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌ синтаксичСском Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈ компиляции; контСкст Π²Π°ΠΆΠ΅Π½ — ΠΌΡ‹ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ срСдних ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ… здСсь. Π£ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ с ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΠΈ процСссорами ΠΈ графичСскими процСссорами, Π±Π΅Π· кСша L2 / L3 ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ сдСрТиваСтся.

Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ возмоТности ΠΈ возмоТности устройств Π½Π΅ всСгда ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠΏΡ‚ΠΎΠ²ΠΎΠ»ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌ соСдинСниСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ процСссор для Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΈΡ… устройство JavaScript. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅Ρ€Π½ΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ .. уТасноС сСтСвоС соСдинСниС, Π½ΠΎ нСвСроятно быстрый процСссор. — ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€ БакстСр, LinkedIn

НиТС ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° ~ 1 ΠœΠ‘ распакованного (простого) JavaScript Π½Π° Π½ΠΈΠ·ΠΊΠΎΠ΅ ΠΈ высококачСствСнноС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅. Π Π°Π·Π½ΠΈΡ†Π° Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° / компиляции составляСт 2–5 Ρ€Π°Π·. ΠΊΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ самыми быстрыми Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌΠΈ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ ΠΈ срСдними Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌΠΈ .

Π­Ρ‚ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊ выдСляСт врСмя синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° для ΠΏΠ°ΠΊΠ΅Ρ‚Π° JavaScript Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 1 ΠœΠ‘ (~ 250 ΠšΠ‘ Π² сТатом Π²ΠΈΠ΄Π΅) Ρ‡Π΅Ρ€Π΅Π· Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства Ρ€Π°Π·Π½Ρ‹Ρ… классов. Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°, слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² распакованном Π²ΠΈΠ΄Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ~ 250 ΠšΠ‘ сТатого сТатого Ρ„Π°ΠΉΠ»Π° JS распаковываСт Π΄ΠΎ ~ 1 ΠœΠ‘ ΠΊΠΎΠ΄Π°.

А ΠΊΠ°ΠΊ насчСт Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ CNN.com?

На iPhone 8 высокого класса для синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° / компиляции JS CNN трСбуСтся всСго ~ 4 сСкунды. Π΄ΠΎ ~ 13 с для срСднСго Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° (Moto G4) . Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ быстро ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с этим сайтом.

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ см. врСмя синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‡ΠΈΠΏΠ° Apple A11 Bionic с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Snapdragon 617 Π² Π±ΠΎΠ»Π΅Π΅ срСднСм ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Android.

Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ тСстирования Π½Π° срСднСм ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Moto G4) вмСсто Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρƒ вас Π² ΠΊΠ°Ρ€ΠΌΠ°Π½Π΅. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½Π°ΠΊΠΎ: ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ для устройств ΠΈ условий сСти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Ρƒ Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Google Аналитика ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ прСдставлСниС ΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… классы устройств, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ваши Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ заходят Π½Π° ваш сайт.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ограничСния CPU / GPU, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с.

НСуТСли ΠΌΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отправляСм слишком ΠΌΠ½ΠΎΠ³ΠΎ JavaScript? Эээ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ πŸ™‚

ИспользованиС HTTP-Π°Ρ€Ρ…ΠΈΠ²Π° (~ 500 тыс. Π‘Π°ΠΌΡ‹Ρ… популярных сайтов) для Π°Π½Π°Π»ΠΈΠ·Π° состояния JavaScript Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ 50% сайтов становятся ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π·Π° 14 сСкунд. Π­Ρ‚ΠΈ сайты тратят Π΄ΠΎ 4 сСкунд Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° парсинг ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ JS.

Π€Π°ΠΊΡ‚ΠΎΡ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для получСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ JS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсов, ΠΈ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽΡ‚ страницы Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию.ΠœΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ большСго здСсь.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ нСкритичСского ΠΊΠΎΠ΄Π° JavaScript со страниц ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Ρ€Π°Π·, Ρ€Π°Π·Π±ΠΎΡ€ ΠΈ компиляция с интСнсивным использованиСм ЦП ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваши страницы Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ.

ВрСмя исполнСния

Π­Ρ‚ΠΎ Π½Π΅ просто синтаксичСский Π°Π½Π°Π»ΠΈΠ· ΠΈ компиляция, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свою Ρ†Π΅Π½Ρƒ. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript (запуск ΠΊΠΎΠ΄Π° послС синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° / компиляции) — ΠΎΠ΄Π½Π° ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅. Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя выполнСния Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ скоро ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с вашим сайтом.

Если скрипт выполняСтся Π±ΠΎΠ»Π΅Π΅ 50 мс, врСмя Π΄ΠΎ интСрактивности задСрТиваСтся Π½Π° всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, компиляции ΠΈ выполнСния JS — АлСкс РассСл

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, JavaScript ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΈΠ· Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ блокируя основной ΠΏΠΎΡ‚ΠΎΠΊ. Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ объСм выполняСмой Ρ€Π°Π±ΠΎΡ‚Ρ‹ сдСлано Π²ΠΎ врСмя исполнСния.

ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ расходы

JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ страницы ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ способами:

  • ΠŸΠ°ΠΌΡΡ‚ΡŒ.Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ часто Π·Π°Π²ΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° GC (мусор коллСкция). Когда Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ освобоТдаСт ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JS приостанавливаСтся, поэтому Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, часто ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉ мусор, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти ΠΈ частыС ΠΏΠ°ΡƒΠ·Ρ‹ gc, Ρ‡Ρ‚ΠΎΠ±Ρ‹ страницы Π½Π΅ зависали.
  • Π’ΠΎ врСмя выполнСния Π΄ΠΎΠ»Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ основной ΠΏΠΎΡ‚ΠΎΠΊ, вызывая страницы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ части (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ requestAnimationFrame () ΠΈΠ»ΠΈ requestIdleCallback () для планирования) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с быстродСйствиСм.

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ для сниТСния стоимости доставки JavaScript

Когда Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ врСмя синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° / компиляции ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎ сСти для JavaScript ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ, Π΅ΡΡ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π° основС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° ΠΈΠ»ΠΈ PRPL.

ΠŸΠ ΠŸΠ›

PRPL (Push, Render, Pre-cache, Lazy-load) — это шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π·Π° счСт агрСссивного раздСлСния ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ прСдставим, ΠΊΠ°ΠΊΠΎΠ΅ влияниС это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ.

ΠœΡ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ популярных ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… сайтов ΠΈ прогрСссивных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Бтатистика Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния V8.Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, врСмя синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° (ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΌ) — это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ проводят врСмя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· этих сайтов:

Wego, сайту, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ PRPL, удаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° врСмя для ΠΈΡ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², ΡΡ‚Π°Π½ΠΎΠ²ΡΡΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΎΡ‡Π΅Π½ΡŒ быстро. МногиС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сайты Π²Ρ‹ΡˆΠ΅ принятыС Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΈΡ… JS расходы.

ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡΠΈΠ²Π½Π°Ρ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°

МногиС сайты ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Ρ†Π΅Π½ΠΎΠΉ интСрактивности.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Быстрая пСрвая отрисовка, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ большиС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ JavaScript, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Π½Π° сторонС сСрвСра; Π·Π°Ρ‚Π΅ΠΌ «ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅» Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ событиС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ JavaScript.

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны — это ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ. Π’Ρ‹ 1) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ отправляСтС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… HTML ΠΎΡ‚Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ Π½Π°ΡˆΡƒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, 2) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ΠΆΡƒΡ‚ΠΊΠΎΠΌ Π΄ΠΎΠ»ΠΈΠ½Π°, Π³Π΄Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΎΠΏΡ‹Ρ‚Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° JavaScript Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡΠΈΠ²Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ.ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ минимально Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ страница (состоящая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· HTML / JS / CSS, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°). По ΠΌΠ΅Ρ€Π΅ поступлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡΠΈΠ²Π½Ρ‹ΠΉ ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Пола Π›ΡŒΡŽΠΈΡΠ°

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ находится Π² ΠΏΠΎΠ»Π΅ зрСния, — это Бвятой Π“Ρ€Π°Π°Π»ΡŒ. PRPL ΠΈ ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡΠΈΠ²Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° — это ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² этом.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для сСтСй Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. ВрСмя синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° Π²Π°ΠΆΠ½ΠΎ для устройств с привязкой ΠΊ ЦП.Π”Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ эти ΠΌΠ΅Π»ΠΊΠΈΠ΅ вопросы.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

добились успСха, установив строгиС Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для сохранСния своих НизкоС врСмя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° / компиляции JavaScript. Π‘ΠΌ. «Can You ΠŸΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС это?: РСальная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ Π‘ΡŽΠ΄ΠΆΠ΅Ρ‚Ρ‹ Β» для руководства ΠΏΠΎ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Ρƒ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств.

Π•Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, насколько JS «Π·Π°ΠΏΠ°ΡΠ°Π΅Ρ‚» Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ нас для Π»ΠΎΠ³ΠΈΠΊΠΈ прилоТСния.

Если Π²Ρ‹ создаСтС сайт, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ всС усилия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ сокращайтС врСмя синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° / компиляции JavaScript ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠ³Π»Π° ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΈΡ… ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ JavaScript.

Π£Π·Π½Π°Ρ‚ΡŒ большС

optimize-js — npm

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» JavaScript для Π±ΠΎΠ»Π΅Π΅ быстрого Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°, Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π² скобки всС Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹.

ПослСдниС измСнСния см. Π’ ΠΆΡƒΡ€Π½Π°Π»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ

  npm install -g optimize-js
  

ИспользованиС

  optimize-js input.js> output.js
  

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄Π°:

 

! Function () {} ()

function runIt (fun) {fun ()}

runIt (function () {})

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

 

! (Function () {}) ()

function runIt (fun) {fun ()}

runIt ((function () {}))

ΠžΠ±Π·ΠΎΡ€ тСста

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ / ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ скорости с использованиСм optimize-js
Π₯Ρ€ΠΎΠΌ 55 20.63%
ΠšΡ€ΠΎΠΌΠΊΠ° 14 13,52%
Firefox 50 8,26%
Safari 10 -1,04%

Π­Ρ‚ΠΈ числа основаны Π½Π° тСстС ΠΎΠ±Ρ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ JS. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ свСдСния ΠΎ тСстах см. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ тСсты.

CLI

  ИспользованиС: optimize-js [ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹]

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:
  --source-map Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ [логичСскоС]
  -h, --help ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ справку [логичСскоС]

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:
  optimize-js input.js> output.js ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ input.js
  optimize-js  output.js читаСтся ΠΈΠ· stdin, записываСтся Π² stdout
  

JavaScript API

 

var optimizeJs = require ('optimize-js');

var input = "! Function () {console.log ('ΠΎΠ±Π΅Ρ€Π½ΠΈΡ‚Π΅ мСня!')}";

var output = optimizeJs (Π²Ρ…ΠΎΠ΄);

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹:

 

var optimizeJs = require ('optimize-js');

var input = "! Function () {console.log ('ΠΎΠ±Π΅Ρ€Π½ΠΈΡ‚Π΅ мСня!')}";

var output = optimizeJs (input, {

sourceMap: true

});

ΠŸΠΎΡ‡Π΅ΠΌΡƒ?

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠΈ JavaScript, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ V8, Chakra ΠΈ SpiderMonkey, ΠΈΠΌΠ΅ΡŽΡ‚ эвристику, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.Π­Ρ‚Π°ΠΏ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° просто провСряСт синтаксичСскиС ошибки, избСгая Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° ΠΏΠΎΠ»Π½Ρ‹ΠΉ синтаксичСский Π°Π½Π°Π»ΠΈΠ·.

Π­Ρ‚Π° эвристика основана Π½Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π½Π° срСднСй Π²Π΅Π±-страницС Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ JavaScript Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΊΠ°Π·Π½Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π»Π΅Π½ΠΈΠ²ΠΎ ΠΊΠ°Π·Π½Π΅Π½Ρ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ врСмя запуска, провСряя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚.Π΅. ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΠΎΠ½Π° сформирована синтаксичСски).

К соТалСнию, это ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² случаС Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (IIFE), Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ эти:

 

(функция () {console.log ('Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ!')}) ();

(функция () {console.log ('Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π² стилС ΠšΡ€ΠΎΠΊΡ„ΠΎΡ€Π΄Π°!')} ());

! Function () {console.log ('Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π² стилС UglifyJS!')} ();

Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ JS-Π΄Π²ΠΈΠΆΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ , Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ IIFE ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этап ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. Π£Ρ€Π°!

ΠŸΠ»ΠΎΡ…Π°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эта эвристика Π½Π΅ всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ основаны Π½Π° ΠΆΠ°Π΄Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π° '(' сразу слСва ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.(ΠŸΠ°Ρ€ΡΠ΅Ρ€ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТного, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½ΠΎ синтаксичСскому Π°Π½Π°Π»ΠΈΠ·Ρƒ всСго этого, сводя Π½Π° Π½Π΅Ρ‚ прСимущСства ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°). Π’ случаях Π±Π΅Π· ΠΏΠ°Ρ€Π΅Π½Π° (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ распространСнныС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ UMD / Browserify / Webpack / ΠΈ Ρ‚. Π΄.), Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ фактичСски ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄Π²Π°ΠΆΠ΄Ρ‹ , сначала ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ синтаксичСский Π°Π½Π°Π»ΠΈΠ·, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ JavaScript Π² Ρ†Π΅Π»ΠΎΠΌ выполняСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° синтаксичСский Π°Π½Π°Π»ΠΈΠ· тратится большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π‘ΠΌ. Β«Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, насколько это ΠΏΠ»ΠΎΡ…ΠΎ.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ оптимизация '(' для IIFE Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстна, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² процСссС сборки, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· всСго Ρ„Π°ΠΉΠ»Π° JavaScript (Ρ€ΠΎΡΠΊΠΎΡˆΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ сСбС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ) ΠΈ вставка скобок Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ функция Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° (ΠΈΠ»ΠΈ Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π΄ΠΎΠ³Π°Π΄ΠΊΠ°). Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ optimize-js .

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ IIFE ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² этом обсуТдСнии.НСкоторыС ΠΈΠ· ΠΌΠΎΠΈΡ… мыслСй ΠΎ достоинствах ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΎ врСмя компиляции ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² этом постС.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

ВСкущая рСализация Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² синтаксичСском Π°Π½Π°Π»ΠΈΠ·Π΅ синтаксичСского Π΄Π΅Ρ€Π΅Π²Π° ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅:

  1. Π’Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ любого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Ρ‹Π·ΠΎΠ²Π° ( function () {} () , ! Function () {} () ΠΈ Ρ‚. Π”.)
  2. ΠŸΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ — Π»Π΅Π³ΠΊΠΈΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ — эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ эвристичСский, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ бСзопасной ставкой, учитывая распространСнныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ошибки Π² стилС ΡƒΠ·Π»Π°, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠΉ ΠΈ объявлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ UMD / Browserify / Webpack.

Π’ΠΎ всСх Ρ‚Π°ΠΊΠΈΡ… случаях optimize-js Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки.

Но … Π²Ρ‹ добавляСтС Π±Π°ΠΉΡ‚Ρ‹!

Π”Π°, optimize-js ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎ Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚ΠΎΠ² (уТас!) На Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ практичСски Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, Ссли Π²Ρ‹ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅ gzip. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ это, Π²ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ gzip для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π² тСстС:

Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π Π°Π·ΠΌΠ΅Ρ€ (Π±Π°ΠΉΡ‚Ρ‹) Π Π°Π·Π½ΠΈΡ†Π° (Π±Π°ΠΉΡ‚Ρ‹)
тСсты / create-react-app.ΠΌΠΈΠ½. js 160387
тСсты / create-react-app.min.optimized.js 160824 + 437
тСсты / immutable.min.js 56738
тСсты / immutable.min.optimized.js 56933 + 195
тСсты / jquery.min.js 86808
тСсты / jquery.min.optimized.js 87109 + 301
тСстов / lodash.ΠΌΠΈΠ½. js 71381
тСсты / lodash.min.optimized.js 71644 + 263
тСсты / pouchdb.min.js 140332
тСсты / pouchdb.min.optimized.js 141231 + 899
тСстов / three.min.js 486996
тСстов / three.min.optimized.js 487279 + 283

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π»ΠΈ

optimize-js для Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ! Если Π²Ρ‹ ΡƒΠΆΠ΅ отправляСтС ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡƒΡŽ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ своСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ optimize-js (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π²Ρ‹ протСстируСтС свой ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚!).Однако ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ optimize-js Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ послС Uglify, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Uglify удаляСт лишниС ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π° Ρ‚Π°ΠΊΠΆΠ΅ отмСняСт IIFE ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли ваши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Uglification ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ, оптимизация Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π°.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ optimize-js ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основаны Π½Π° эвристикС, Π° Π½Π΅ , извСстный Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ вызываСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ вашСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. (ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ см. Π’ тСстах Π½ΠΈΠΆΠ΅.ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ optimize-js — это ΠΏΠΎΠΌΠΎΡ‰ΡŒ, Π° Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ…Π° для вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ сцСнария Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ врСмя синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° / компиляции.Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы сСти, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ, Π² Π½Π°ΡˆΠΈΡ… тСстах.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠœΠ°Ρ€ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ / измСрСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° шкалС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Dev Tools, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ врСмя компиляции измСряСтся.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ протСстируйтС Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…! Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° пограничная Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, заглянитС Π½Π° edge.ms.

Π Π°Π·Π²Π΅ это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π£Π³Π»ΠΈΡ„ΠΈ?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ! Π­Ρ‚ΠΎ бСсплатная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, поэтому я ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°ΡŽ всСх ΠΏΠΎΠ·Π°ΠΈΠΌΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ.:)

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ°Ρ€Π΅Π½ΠΎΠΌ?

Как описано Π²Ρ‹ΡˆΠ΅, оптимизация ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… — ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя для ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π²Π΅Π±-сайтов, Π³Π΄Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ optimize-js Π·Π½Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ваши Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ (ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ Π΄ΠΎΠ³Π°Π΄ΠΊΠΈ), ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π΅Π½-Ρ…Π°ΠΊ.

Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° JavaScript?

Будя ΠΏΠΎ ΠΌΠΎΠΈΠΌ тСстам, эта оптимизация Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для V8 (Chrome), Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Chakra (Edge), Π° Π·Π°Ρ‚Π΅ΠΌ SpiderMonkey (Firefox).Для JavaScriptCore (Safari) это ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΡ€ΠΎΠΌΡ‹Π²ΠΊΡƒ, ΠΈ Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСбольшой рСгрСсс Π² Ρ†Π΅Π»ΠΎΠΌ Π² зависимости ΠΎΡ‚ вашСй ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹. (ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ измСрСния Π½Π° вашСй собствСнной ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ΡΡŒ!)

Π’ случаС с Chakra IIFE Π² стилС Uglify Π½Π° самом Π΄Π΅Π»Π΅ ΡƒΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π½ΠΎ использованиС optimize-js Π½Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ функция, ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стоит '(' ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² быстрый ΠΏΡƒΡ‚ΡŒ.

ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Ρ‹

Π­Ρ‚ΠΈ тСсты Π±Ρ‹Π»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ с использованиСм Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, рассчитанных Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ .now () ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ тСстС ΡΠΎΠΎΠ±Ρ‰Π°Π»ΠΎΡΡŒ ΠΎ срСднСм 251 ΠΏΡ€ΠΎΠ³ΠΎΠ½Π΅. optimize-js commit da51013 Π±Ρ‹Π» протСстирован. ΠœΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ uglifyjs -mc , Uglify 2.7.0.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΆΠΈΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ тСста.

Chrome 55, Windows 10 RS1, Surfacebook i5

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠœΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΈΠ½. + ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React 55.39 мс 51,71 мс 6,64% 26,12 мс 21,09 мс 19,26%
нСизмСняСмый JS 11,61 мс 7,95 мс 31,50% 8,50 мс 5,99 мс 29,55%
jQuery 22,51 мс 16,62 мс 26,18% 19,35 мс 16,10 мс 16.80%
Π›ΠΎΠ΄Π°Ρˆ 20,88 мс 19,30 мс 7,57% 20,47 мс 19,86 мс 3,00%
Π§Π΅Ρ…ΠΎΠ» DB 43,75 мс 20,36 мс 53,45% 36,40 мс 18,78 мс 48,43%
Π’Ρ€ΠΈ JS 71,04 мс 72,98 мс -2,73% 54.99 мс 39,59 мс 28,00%

ΠžΠ±Ρ‰Π΅Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅: 20,63%

Edge 14, Windows 10 RS1, SurfaceBook i5

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠœΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΈΠ½. + ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React 32,46 мс 24,85 мс 23.44% 26,49 мс 20,39 мс 23,03%
нСизмСняСмый JS 8,94 мс 6,19 мс 30,74% 7,79 мс 5,41 мс 30,55%
jQuery 22,56 мс 14,45 мс 35.94% 16,62 мс 12,99 мс 21,81%
Π›ΠΎΠ΄Π°Ρˆ 22.16 мс 21,48 мс 3,05% 15,77 мс 15,46 мс 1,96%
Π§Π΅Ρ…ΠΎΠ» DB 24,07 мс 21,22 мс 11,84% 39,76 мс 52,86 мс -32,98%
Π’Ρ€ΠΈ JS 43,77 мс 39,99 мс 8,65% 54,00 мс 36,57 мс 32.28%

ΠžΠ±Ρ‰Π΅Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅: 13,52%

Firefox 50, Windows 10 RS1, Surfacebook i5

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠœΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΈΠ½. + ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React 33,56 мс 28.02 мс 16,50% 24,71 мс 22.05 мс 10,76%
нСизмСняСмый JS 6,52 мс 5,75 мс 11.80% 4,96 мс 4,58 мс 7,47%
jQuery 15,77 мс 13,97 мс 11,41% 12,90 мс 12,15 мс 5,85%
Π›ΠΎΠ΄Π°Ρˆ 17,08 мс 16,63 мс 2.64% 13,11 мс 13,22 мс -0,80%
Π§Π΅Ρ…ΠΎΠ» DB 19,23 мс 16,77 мс 12,82% 13,77 мс 12,89 мс 6,42%
Π’Ρ€ΠΈ JS 38,33 мс 37,36 мс 2,53% 33.01 мс 30,32 мс 8,16%

ΠžΠ±Ρ‰Π΅Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅: 8.26%

Safari 10, macOS Sierra, MacBook Pro i5 2013 Π³ΠΎΠ΄Π° выпуска

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠœΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΈΠ½. + ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React 31,60 мс 31,60 мс 0,00% 23,10 мс 23,50 мс -1,73%
нСизмСняСмый JS 5.70 мс 5,60 мс 1,75% 4,50 мс 4,50 мс 0,00%
jQuery 12,40 мс 12,60 мс -1,61% 10,80 мс 10,90 мс -0,93%
Π›ΠΎΠ΄Π°Ρˆ 14,70 мс 14,50 мс 1,36% 11,10 мс 11,30 мс -1.80%
Π§Π΅Ρ…ΠΎΠ» DB 14,00 мс 14.20 мс -1,43% 11,70 мс 12,10 мс -3,42%
Π’Ρ€ΠΈ JS 35,60 мс 36,30 мс -1,97% 27,50 мс 27,70 мс -0,73%

ΠžΠ±Ρ‰Π΅Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅: -1,04%

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ эти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вашСй ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ваш ЦП, Π³Ρ€Π΅ΠΌΠ»ΠΈΠ½ΠΎΠ² ΠΈ Ρ‚. Π”.Π― запускал ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ нСсколько Ρ€Π°Π· Π²ΠΎ всСх Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ эти Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π΅ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹. Π’ нашСм Π½Π°Π±ΠΎΡ€Π΅ тСстов ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 151 запуск, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹

Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅

Бпасибо

Бпасибо @krisselden, @bmaurer ΠΈ @pleath Π·Π° объяснСниС этих ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… выпусках GitHub. Π’Π°ΠΊΠΆΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ astexplorer, acorn ΠΈ magic-string Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ сдСлали Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚Π°ΠΊΠΎΠΉ простой.

Бпасибо БашС Айкину Π·Π° Ρ‰Π΅Π΄Ρ€Ρ‹ΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (особСнно Π² v1.0,3) ΠΈ ΠΏΠΎΠ΄Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚ мСня ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ точности тСстов.

БодСйствиС

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ запуск тСстов:

ЗапуститС тСсты:

ΠŸΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ тСстового ΠΊΠΎΠ΄Π°:

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

  • v1.0.3
    • Намного Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ тСст (# 37)
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ, связанныС с Browserify (# 29, # 36, # 39)
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ, относящиСся ΠΊ Webpack (# 7, # 34)
  • v1.0.2
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ estree-walker для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ES6 (# 31)
  • v1.0,1:
    • НС Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ process.exit (0) Π² случаС успСха (# 11)
  • v1.0.0

Как ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ доставку JavaScript для ускорСния вашСго сайта

JavaScript — Π²Π°ΠΆΠ½Ρ‹ΠΉ аспСкт создания ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сайтов, Π½ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° способ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страниц. Как ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ», ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ Π²Π΅Π±-страницу, JavaScript Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½ смоТСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² JavaScript, Π° Ρ‚Π°ΠΊΠΆΠ΅ способ доставки этих Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Π»ΠΈΡΡŽΡ‚ Π½Π° врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. JavaScript Ρ‚Π°ΠΊΠΆΠ΅ являСтся динамичСским языком ΠΈ компилируСтся Π½Π° Π»Π΅Ρ‚Ρƒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ.Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ JavaScript Π±ΠΎΠ»Π΅Π΅ дорогостоящСй, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ².

Π­Ρ‚ΠΎΡ‚ пост Π±ΡƒΠ΄Π΅Ρ‚ посвящСн ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ доставки для JavaScript: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ слСдуСт Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ, сообраТСниям ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ссылкам Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ рСсурсы. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ JavaScript Ρ‚Π°ΠΊΠΆΠ΅ нСвСроятно Π²Π°ΠΆΠ½Π° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ соврСмСнных Π²Π΅Π±-сайтов, Π½ΠΎ я расскаТу ΠΎΠ± этом Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ВлияниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° JS

На ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ… сайтов, ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HTTP-Π°Ρ€Ρ…ΠΈΠ²Π°, Π½Π° JavaScript приходится 15% вСса страниц для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΈ 16% для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… страниц.Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² это составляСт ΠΎΠΊΠΎΠ»ΠΎ 400 ΠšΠ‘ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΡΠ΅Ρ‰Π΅Π½Π½ΡƒΡŽ страницу ΠΈ 360 ΠšΠ‘ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Если ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ соСдинСниС, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 14 ΠšΠ‘ Π΄Π°Π½Π½Ρ‹Ρ…, становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° JS являСтся Π²Π°ΠΆΠ½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Но 400 ΠšΠ‘ JavaScript Π½Π΅ Ρ€Π°Π²Π½Ρ‹ 400 ΠšΠ‘ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния, отчасти ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° JavaScript происходит ΠΏΡ€ΠΈ нСсТатом Ρ„Π°ΠΉΠ»Π΅. Π‘Π°ΠΉΡ‚ Π·Π° Π±Π°ΠΉΡ‚ΠΎΠΌ, JavaScript Π΄ΠΎΡ€ΠΎΠΆΠ΅, Ρ‡Π΅ΠΌ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»ΠΎΠ² для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° страницС с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ЦП ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.Если ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сТатиС GZIP ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ доставлСнного тСкстового Ρ„Π°ΠΉΠ»Π° Π½Π° 70–90%, 400 ΠšΠ‘ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² 1,3–4,0 ΠœΠ‘.


Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ воздСйствия JS-доставки

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы, связанноС с доставкой JavaScript? Π•ΡΡ‚ΡŒ Π΄Π²Π° способа, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ:

  1. Π£ΡΠΊΠΎΡ€ΡŒΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ JS Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.
    • Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ объСм JS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для создания страницы.
    • ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ всС рСсурсы JS ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ сторонний JS.
    • Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ стороннСго JS (ΠΈΠ»ΠΈ использованиС сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°).
    • Π‘ΠΆΠ°Ρ‚ΡŒ JS.
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ push ΠΈ preload для критичСского JS.
  2. Π—Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ JS Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.
    • Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΉ ΠΊΠΎΠ΄ JS.
    • Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² JS для доставки основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
    • Асинхронная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° нСкритичСских JS-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
    • Кэш JS.

ΠœΡ‹ рассмотрим пСрСчислСнныС ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для достиТСния ΠΎΠ±Π΅ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ стороннСму JavaScript, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ большого контроля.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях Π²Π°ΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ваша ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Π±Π°Π·Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ. Real User Monitoring позволяСт Π²Π°ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ вСрсии Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСны срСди Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈ ΠΈΡ… слСдуСт ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для тСстирования Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ вноситС Π½Π° свой сайт.

УскорСниС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ JS Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ объСм JS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для создания страницы

Если Π²Ρ‹ прСдоставитС мСньшС JavaScript, страница Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ быстрСС.

НС Π·Π½Π°Π΅Ρ‚Π΅, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ? ΠœΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ JS — это самый Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ Π²ΠΈΠ΄ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для создания вашСго сайта, поэтому Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Для интСрактивности Π½Π° страницС рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JavaScript для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ — ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ событий — Π° Π½Π΅ для Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ярких, растянутых Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈ сторонниС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅ Π²Π°ΠΆΠ½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ страница Π΄Π΅Π»Π°Π»Π°? ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± ΠΈΡ… устранСнии.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Google Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, основанныС Π½Π° восприятии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΎ нСобходимости JS Π½Π° страницС Π² сочСтании с тСстированиСм.

ВосприятиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠΎΡ‚ 0 Π΄ΠΎ 16 мс

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈ Π² отслСТивании двиТСния, ΠΈ ΠΈΠΌ Π½Π΅ нравится, ΠΊΠΎΠ³Π΄Π° анимация Π½Π΅ плавная.Они Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π²Π½ΡƒΡŽ, Ссли ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду рСндСрится 60 Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ². Π­Ρ‚ΠΎ 16 мс Π½Π° ΠΊΠ°Π΄Ρ€, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€ Π½Π° экранС, оставляя ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΎΠΊΠΎΠ»ΠΎ 10 мс для создания ΠΊΠ°Π΄Ρ€Π°.

ΠΎΡ‚ 0 Π΄ΠΎ 100 мс

ΠžΡ‚Π²Π΅Ρ‡Π°ΠΉΡ‚Π΅ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… этого Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ. Если дольшС, связь ΠΌΠ΅ΠΆΠ΄Ρƒ дСйствиСм ΠΈ противодСйствиСм Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ.

ΠΎΡ‚ 100 Π΄ΠΎ 300 мс

Π£ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ нСбольшая замСтная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°.

ΠΎΡ‚ 300 Π΄ΠΎ 1000 мс

Π’ этом ΠΎΠΊΠ½Π΅ всС каТСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ СстСствСнного ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ выполнСния Π·Π°Π΄Π°Ρ‡. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° страниц ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ прСдставлСний прСдставляСт собой Π·Π°Π΄Π°Ρ‡Ρƒ.

1000 мс или болСС

По истСчСнии 1000 миллисСкунд (1 сСкунда) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ‚Π΅Ρ€ΡΡŽΡ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ выполняСмой Π·Π°Π΄Π°Ρ‡Π΅.

10000 мс или болСС

ΠŸΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ 10000 миллисСкунд (10 сСкунд) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ, скорСС всСго, бросят Π·Π°Π΄Π°Ρ‡ΠΈ.Они ΠΌΠΎΠ³ΡƒΡ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ, Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π½Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΏΠΎΠ·ΠΆΠ΅.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ JS

ΠœΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ удаляСт Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ прСпинания, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ символы Π½ΠΎΠ²ΠΎΠΉ строки. Π˜ΡΡ‚ΠΈΠ½Π½Π°Ρ минификация Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ, которая ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ мСньшСго количСства Π±Π°ΠΉΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для чтСния Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ.

Π’ сСти Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ инструмСнтов для ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½Π΅ всС ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСго сайта, ΠΈ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ Ρ„ΠΎΡ€ΠΌΡƒ ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.Π§Π΅ΠΌ мСньшС Π±Π°ΠΉΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π½Π° Ρ„Π°ΠΉΠ» JavaScript, Ρ‚Π΅ΠΌ быстрСС ΠΎΠ½ загруТаСтся ΠΈ Ρ‚Π΅ΠΌ быстрСС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ смоТСт Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ стороннСго JS, Ссли ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ (ΠΈΠ»ΠΈ использованиС сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°)

Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ стороннСго JavaScript Π² вашСм собствСнном Π΄ΠΎΠΌΠ΅Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² обслуТивании — Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ автоматичСских ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ для скрипта, Π° измСнСния Π² API ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π±Π΅Π· прСдупрСТдСния — Π½ΠΎ это всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли скрипт критичСски Π²Π°ΠΆΠ΅Π½ для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° вашСго страница. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ ΡΠ΅Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ бСзопасности, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² вашСм исходном ΠΊΠΎΠ΄Π΅ (см. «УстранСниС ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°Β» Π½ΠΈΠΆΠ΅).

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ сторонних скриптов являСтся использованиС сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° для опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ часто Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ ΠΈΠ· сСти, хотя этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊΠΈΠΌ доступным, ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ хостинг для сайтов с ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ.

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ JS

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сторонС сСрвСра ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°.Π­Ρ‚ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ JavaScript позволяСт Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ большС нСсТатых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, устраняя Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… Ρ†ΠΈΠΊΠ»Π°Ρ…. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ JavaScript вмСстС с CSS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ тСкстовыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ вСс страницы Π²Π΄Π²ΠΎΠ΅.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»Ρ‡ΠΎΠΊ ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ для критичСских JS

Server push ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для доставки Ρ„Π°ΠΉΠ»ΠΎΠ², критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° страницы, Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ страницы, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ.

Π€Π°ΠΉΠ» загруТаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ push, Ссли ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½Π° сторонС сСрвСра — сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ запрос ΠΈ Π΅ΠΌΡƒ Π·Π°Ρ€Π°Π½Π΅Π΅ сказано, Ρ‡Ρ‚ΠΎ рСсурсы x, y ΠΈ z Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ вмСстС с Π½ΠΈΠΌ.ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡŽ push ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² HTTP / 2.

Preload Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся, Π³Π΄Π΅ связанным рСсурсам ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСн Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Β«preloadΒ» Π² Ρ„Π°ΠΉΠ»Π΅ HTML. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ страница Π±ΡƒΠ΄Π΅Ρ‚ доставлСна ​​и ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ начинаСтся синтаксичСский Π°Π½Π°Π»ΠΈΠ· HTML, эти рСсурсы Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ с сСрвСра. Π­Ρ‚ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· HTML, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ рСсурсы Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ пСрСчислСны Π² HTML.

Π—Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ JS Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» JavaScript Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» JavaScript Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС вашСго сайта. Для достиТСния этих Ρ†Π΅Π»Π΅ΠΉ я расскаТу ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π°ΠΌ слСдуСт Π·Π½Π°Ρ‚ΡŒ, ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡŽ ссылки Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ рСсурсы.

УстранСниС ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ встряхивании Π΄Π΅Ρ€Π΅Π²Π°

ВстряхиваниС Π΄Π΅Ρ€Π΅Π²Π°, ΠΈΠ»ΠΈ устранСниС ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, избавляСт, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅ догадались, ΠΎΡ‚ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π½Π° вашСй страницС. НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ JQuery, Π½ΠΎ ΠΏΡ€ΠΈ создании страницы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… JQuery, Π² собствСнном ΠΊΠΎΠ΄Π΅.Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ части Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ JQuery, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅.

Π’Π΅Ρ€ΠΌΠΈΠ½ «встряхиваниС Π΄Π΅Ρ€Π΅Π²Π°Β» популяризировал Rollup, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ доступСн Ρ‡Π΅Ρ€Π΅Π· webpack ΠΈ source-map-explorer. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ эта функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с модулями ES2015, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ синтаксис для ссылки Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ JS Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ CommonJS, доступны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ webpack-common-shake, Π½ΠΎ ΠΏΡ€ΠΈ использовании CommonJS Π²Ρ‹, скорСС всСго, ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с ограничСниями.Π’ долгосрочной пСрспСктивС, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встряхиваниС Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π², Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ES2015 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ поздняя вСрсия.

Доставка основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π° основС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° основС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, примСняСтся ΠΊ Π²Π΅Π±-сайтам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ одностраничныС прилоТСния, прогрСссивныС Π²Π΅Π±-прилоТСния ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ трСбуСтся большой ΠΏΠ°ΠΊΠ΅Ρ‚ JS для создания ΠΏΠ΅Ρ€Π²ΠΎΠΉ страницы, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²ΠΈΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. ИспользованиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π° основС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² позволяСт сначала Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π½Π° страницу Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π° JS для ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΈ интСрактивности, Ρ‡Ρ‚ΠΎ сокращаСт ΠΎΠ±Ρ‰ΠΈΠΉ объСм JavaScript, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ для построСния страницы, Π° Ρ‚Π°ΠΊΠΆΠ΅ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠ³ΠΎ содСрТаниС.

Π’ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ опрСдСляСтС, Π³Π΄Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния, ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ ваши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎΠ²Π° ваша сСрвСрная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. Π•ΡΡ‚ΡŒ нСсколько Ρ‚ΠΈΠΏΠΎΠ² раздСлСния ΠΊΠΎΠ΄Π°:

  • Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° поставщика отдСляСт ваш JS ΠΎΡ‚ JS, прСдоставлСнного вашим поставщиком Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ React ΠΈΠ»ΠΈ Vue. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ поставщику ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² любом ΠΈΠ· источников ΠΊΠΎΠ΄Π°. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° поставщиков Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
  • Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ…ΠΎΠ΄Π° раздСляСт ваш ΠΊΠΎΠ΄ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ Π² вашСм ΠΊΠΎΠ΄Π΅ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ зависимости Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.Если ваш сайт Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SPA ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°), использованиС Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ…ΠΎΠ΄Π° для раздСлСния ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ смысл. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΈ использованиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ инструмСнта, ΠΊΠ°ΠΊ Bundle Buddy, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ страницам Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ быстрСС.
  • ДинамичСскоС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с прилоТСниями, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ одностраничными прилоТСниями, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° страницС. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ динамичСского ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° import () , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅.По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ динамичСский ΠΈΠΌΠΏΠΎΡ€Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ async / await. Parcel ΠΈ webpack Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ динамичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ import () для ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ рСсурсов ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.
Асинхронная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° нСкритичСских JS-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

ИспользованиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² async ΠΈ defer для Π²Π½Π΅ΡˆΠ½ΠΈΡ… сцСнариСв ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, особСнно со сторонними сцСнариями. И async , ΠΈ defer ΡΠ²Π»ΡΡŽΡ‚ΡΡ асинхронными для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠΈ рСсурсов.ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ? Для JavaScript ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° сцСнария являСтся синхронным, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ процСссы Π½Π° страницС ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΏΠΎΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ эти шаги.

Атрибут async ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ defer Π² соврСмСнных Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ соврСмСнныС Π΄Π²ΠΈΠΆΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ приспособлСны для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ JavaScript. Π’ старых Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… всС Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript происходит Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.JavaScript с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ async всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ JavaScript с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ defer . Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΉ JavaScript выполняСтся Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, ΠΈ Π΅Π³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ страницу (ΠΈ, вСроятно, Π΄Π°ΠΆΠ΅ Π½Π΅ Ρ‚ΠΎΠ³Π΄Π°).

Кэш JS

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСсколькими способами ΠΈ связано с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ функциями сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ². ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ позволяСт Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ рСсурс с сСрвСра вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС, Π½Π΅ трСбуя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ· кСша.

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ доставки Π½Π° страницу, ΠΈ Π΅Π³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для JavaScript ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ….

Takeaways and TL; DR

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ соврСмСнных Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ JavaScript Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² обслуТивании, Ρ‡Π΅ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ. Π₯отя Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, Π΅ΡΡ‚ΡŒ всСго нСсколько Ρ†Π΅Π»Π΅ΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ стрСмятся Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ JavaScript:

  1. МСньшиС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ страницы
  2. Быстрая доставка
  3. Π‘ΠΎΠ»Π΅Π΅ эффСктивная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π’ этом постС ΠΌΡ‹ рассмотрим ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой.МСньшиС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ страниц Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹, Ссли Π²Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ объСм ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ доставляСтС своим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, Ρ‚Π΅ΠΌ самым доставляя ΠΈΡ… быстрСС.

TL; DR
  • УстранСниС Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ JavaScript, минимизация ΠΈ сТатиС JavaScript, встряхиваниС Π΄Π΅Ρ€Π΅Π²Π° ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° — всС это сниТаСт объСм JavaScript, доставляСмого Π½Π° страницу.
  • Доставка рСсурсов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° ΠΈ использованиС ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, загруТаСтся Π»ΠΈ JavaScript Π½Π° страницу.
  • Асинхронная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° скриптов с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ критичСского JavaScript Ρ‚Π°ΠΊΠΆΠ΅ позволяСт страницС Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ быстрСС.

Как всСгда, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ измСнСния, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ ΠΈΡ…, Π° Π·Π°Ρ‚Π΅ΠΌ посмотритС, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π²Π°ΡˆΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Π±Π°Π·Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. И Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ посту, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ рассказано ΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Ρ†Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JavaScript — Π±ΠΎΠ»Π΅Π΅ эффСктивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ JavaScript.

<<< Π§Π°ΡΡ‚ΡŒ 1: Как ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅

<< Π§Π°ΡΡ‚ΡŒ 2: Как ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ CSS для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅

<Π§Π°ΡΡ‚ΡŒ 3: Как ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTML для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сСти

Как ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JavaScript — Stackify

JavaScript — это ΠΎΠ±Ρ‰ΠΈΠΉ язык Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.Из-Π·Π° своСй популярности оптимизация JavaScript становится всС Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, связанных с JavaScript, ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ js.



Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ js

БущСствуСт ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JavaScript. Π’ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ js:

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ качСства :

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JavaScript Π·Π° счСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ всС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π±Π΅Π· вашСго Π²Π΅Π΄ΠΎΠΌΠ°.

НСорганизованный ΠΊΠΎΠ΄

JavaScript Π½Π΅Ρ‡Π΅Ρ‚ΠΊΠΈΠΉ, Ρ‡Ρ‚ΠΎ являСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ плюсом ΠΈ минусом.

МСлкиС подмноТСства лСксичСских конструкций ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ. Однако отсутствиС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСдостаточному Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ рСсурсов.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ сильно ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JavaScript .ПониманиС ECMA Π²Π°ΠΆΠ½ΠΎ для понимания JavaScript. .

Блишком ΠΌΠ½ΠΎΠ³ΠΎ зависимостСй

Иногда зависимости JavaScript ΠΏΠ»ΠΎΡ…ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½Ρ‹. Когда это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, это ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ скаТСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния.

НапримСр, ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ дольшС ΠΆΠ΄Π°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

НСэффСктивныС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Однако это Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ создаСт ΠΈΠ΄Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ JavaScript. По ΠΌΠ΅Ρ€Π΅ исправлСния Π½Π΅Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JavaScript Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡΡ.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ js

ΠžΠ±Ρ€Π΅Π·ΠΊΠ° HTML

JavaScript HTML слоТСн ΠΈ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ запросов для запросов ΠΈ измСнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² DOM.

Если Π²Π΄Π²ΠΎΠ΅ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ HTML-ΠΊΠΎΠ΄ прилоТСния, ΠΌΠΎΠΆΠ½ΠΎ Π²Π΄Π²ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ DOM.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТно, Π½ΠΎ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ссли ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅Π³ΠΎΠ², ΠΊΠ°ΠΊ

ΠΈ .

ΠŸΠ°ΠΊΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ DOM

ΠŸΠ°ΠΊΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ DOM для прСдотвращСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ экрана. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ стиля вноситС всС измСнСния сразу, Π° Π½Π΅ примСняйтС измСнСния ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΡΡ‚ΠΈΠ»ΡŽ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² асинхронного программирования

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ JavaScript трСбуСтся мноТСство Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² многочислСнных API для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ПО Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ JavaScript являСтся ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. JavaScript управляСт асинхронным ΠΊΠΎΠ΄ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ async.js.

Асинхронный ΠΊΠΎΠ΄ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ. ВмСсто этого ΡƒΠ³Ρ€ΠΎΠ·Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ событий, которая срабатываСт послС выполнСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ².

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ асинхронных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ JavaScript ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшнюю Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊ асинхронным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ с ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JavaScript . ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² ΠΊΠΎΠ΄Π΅ асинхронныС API-интСрфСйсы, особСнно Π² критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ИспользованиС сТатия gzip

Π€Π°ΠΉΠ»Ρ‹ JavaScript ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ GZip для распаковки ΠΈ сТатия Ρ„Π°ΠΉΠ»ΠΎΠ². GZip ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ экономит полосу пропускания. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GZip сСрвСр сТимаСт рСсурс ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π² ​​браузСр.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTTP / 2

ПослСднСй вСрсиСй HTTP являСтся HTTP / 2 с ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JavaScript ΠΈ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π΅Π±-сайтов.

HTTP / 2 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ позволяСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ нСсколько ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΈ запросов. БуфСризация DOM

Если Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ DIV, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ элСмСнтов DOM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² настоящСС врСмя Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π² области просмотра. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π½Π° ΠΎΠ±Ρ…ΠΎΠ΄Π΅ DOM, Ρ‚Π°ΠΊ ΠΈ Π½Π° использовании памяти.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ зависимости Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

ВрСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° зависимости Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, поэтому Π²Π°ΠΆΠ½ΠΎ свСсти использованиС ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ.

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ зависимостСй Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ — это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

ΠŸΡ€ΠΈ использовании сСлСкторов CSS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Sizzle.js вмСсто jQuery. Когда Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ сСлСкторы CSS ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ компактности ΠΈ лСгкости ΠΊΠΎΠ΄ΠΎΠ²

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ компактности ΠΊΠΎΠ΄Π° JavaScript снизит Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ повысит ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JavaScript спроситС сСбя:

  • БущСствуСт Π»ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² этом ΠΌΠΎΠ΄ΡƒΠ»Π΅?
  • Π’ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° использования этого Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°?
  • Бтоят Π»ΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы?
  • Π•ΡΡ‚ΡŒ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎΠΏΡ€ΠΎΡ‰Π΅?

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JavaScript ΠΏΡƒΡ‚Π΅ΠΌ прСобразования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² JS Π² ΠΎΠ΄ΠΈΠ½.

РСализация инструмСнтов управлСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для js ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JavaScript, Π²Π°ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт управлСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ управлСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Retrace, ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с Real User Monitoring (RUM). RUM ускоряСт Π²Π΅Π±-ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, позволяя ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ внСшний ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ΄. Π’Π°ΠΊΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ комплСксный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ выявлСниС ΡƒΠ·ΠΊΠΈΡ… мСст ΠΈ позволяСт Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.По ΠΌΠ΅Ρ€Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π΅Π±-страницы Π²Π΅Π±-страницы Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ быстрСС ΠΈ становятся Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹, становятся Π±ΠΎΠ»Π΅Π΅ заинтСрСсованными ΠΈ, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅, с большСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ.

РУМ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ ΠΏΠΎ рСсурсам. Π Π°Π·Π±ΠΈΠ²ΠΊΠ° рСсурсов ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй ΠΈ скрипты. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСгмСнтации RUM позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для отслСТивания Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² зависимости ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Π³Π΅ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΈ Ρ‚ΠΈΠΏΠ° устройства. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ возмоТностСй для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° Π·Π° счСт опрСдСлСния ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… мСстополоТСний для сСтСй CDN.ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ 14-Π΄Π½Π΅Π²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Retrace RUM сСгодня.

Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ для вашСго сайта WordPress

Autoptimize — это бСсплатный ΠΏΠ»Π°Π³ΠΈΠ½ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ WordPress. Помимо ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ HTML, CSS ΠΈ JavaScript, Autoptimize Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ аспСкты соврСмСнных сайтов WordPress.

Π’ этом постС ΠΌΡ‹ расскаТСм ΠΎ Π»ΡƒΡ‡ΡˆΠΈΡ… настройках ΠΏΠ»Π°Π³ΠΈΠ½Π° Autoptimize для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ скорости страницы вашСго сайта WordPress.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Π° автоматичСская оптимизация?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ углубимся Π² Π»ΡƒΡ‡ΡˆΠΈΠ΅ настройки автоматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ быстро рассмотрим Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Autoptimize являСтся ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

  1. БСсплатная вСрсия Autoptimize ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ вашСго сайта WordPress.
  2. Autoptimize — это строго ΠΏΠ»Π°Π³ΠΈΠ½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π½Π΅ выполняСт ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ HTML-страниц. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ совмСстим со всСми Π²Π΅Π±-хостами — Π΄Π°ΠΆΠ΅ с настраиваСмыми конфигурациями ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ страниц, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Kinsta.
  3. Autoptimize ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… установок Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ WordPress ΠΈ постоянно обновляСтся Π½ΠΎΠ²Ρ‹ΠΌΠΈ функциями ΠΈ исправлСниями ошибок.

АвтоматичСская оптимизация настроСк JS, CSS ΠΈ HTML

HTML, CSS ΠΈ JavaScript — это Ρ…Π»Π΅Π± с маслом для Autoptimize.Как ΠΈ Π² случаС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ настроСк Autoptimize ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСпростой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΌΡ‹ собрали Π»ΡƒΡ‡ΡˆΠΈΠ΅ настройки автоматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ вашСго сайта.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ JavaScript

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ JavaScript Π² Autoptimize.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° JavaScript

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту ΠΎΠΏΡ†ΠΈΡŽ. Когда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° «оптимизация ΠΊΠΎΠ΄Π° JavaScriptΒ», функция Autoptimize ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ваши Ρ„Π°ΠΉΠ»Ρ‹ JavaScript.

Π‘ΠΎΠ²ΠΎΠΊΡƒΠΏΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ JS
ΠžΠΏΡ†ΠΈΡ

Autoptimize Β«Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ JSΒ» ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ всС ваши Ρ„Π°ΠΉΠ»Ρ‹ JavaScript Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ».Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ объСдинСниС Ρ„Π°ΠΉΠ»ΠΎΠ² JS ΠΈ CSS Π±Ρ‹Π»ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ шагом Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ WordPress. Π’ Kinsta ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ соврСмСнныС сСрвСры HTTP / 2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ — это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ объСдинСниС Ρ„Π°ΠΉΠ»ΠΎΠ² ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ HTTP / 2 позволяСт Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ сказанного, Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² CSS ΠΈ JS ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ скорости для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² сайтов WordPress, поэтому ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вашСй страницы с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ этой ΠΎΠΏΡ†ΠΈΠ΅ΠΉ.

Π’Π°ΠΊΠΆΠ΅ Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ встроСнный JS

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«Ρ‚Π°ΠΊΠΆΠ΅ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ встроСнный JSΒ» ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ встроСнный JS Π² ваш HTML ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π΅Π³ΠΎ с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ JS Autoptimize. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ быстрому ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° кэша Π°Π²Ρ‚ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ, Ссли Ρƒ вас Π½Π΅Ρ‚ особых ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JavaScript Π²

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΌΡ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ JavaScript Π² элСмСнт HTML вашСго сайта.ΠŸΡ€ΠΈΠ½ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊ Ρ€Π°Π½Π½Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ JS ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ элСмСнтам, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вашСй страницы. Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² элСмСнт , ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эти сцСнарии ΠΈΠ· Autoptimize.

Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сцСнарии ΠΈΠ· автоматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ JavaScript ΠΈΠ· агрСгирования. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Autoptimize ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сцСнарии.

  • wp-Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ / js / dist /
  • wp-Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ / js / tinymce /
  • js / jquery / jquery.js

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ сцСнария для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ влияСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ JavaScript Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Β«ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ CSS ΠΈ JSΒ» Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ снят Ρ„Π»Π°ΠΆΠΎΠΊ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹Β».

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ Try-Catch

ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΠΏΡ†ΠΈΠΈ Β«Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ try-catchΒ» ваш ΠΊΠΎΠ΄ JavaScript Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π±Π»ΠΎΠΊΠΈ try-catch. Π­Ρ‚Π° опция ΠΏΠΎΠ»Π΅Π·Π½Π° для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠ΅ΠΉ JS. Если ваш сайт Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Β«Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ try-catchΒ», ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ваши Ρ„Π°ΠΉΠ»Ρ‹ JavaScript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ использованиС Π±Π»ΠΎΠΊΠΎΠ² try-catch ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JS.

Autoptimize: бСсплатный ΠΏΠ»Π°Π³ΠΈΠ½ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ WordPress, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ … Π½ΠΎ ΠΎΠ½ сдСлаСт ваш сайт молниСносным βš‘οΈΠ­Ρ‚ΠΎ руководство Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, Π·Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ это Π½ΡƒΠΆΠ½ΠΎ πŸš€ΠΠ°ΠΆΠΌΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π²ΠΈΡ‚Π½ΡƒΡ‚ΡŒ

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ CSS

АвтоматичСская оптимизация CSS.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° CSS

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту ΠΎΠΏΡ†ΠΈΡŽ. Когда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° «оптимизация ΠΊΠΎΠ΄Π° CSSΒ», функция Autoptimize ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ваши Ρ„Π°ΠΉΠ»Ρ‹ CSS.

Π‘ΠΎΠ²ΠΎΠΊΡƒΠΏΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ CSS
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ CSSΒ» Π²

Autoptimize ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ всС ваши Ρ„Π°ΠΉΠ»Ρ‹ CSS Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ».Как ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅, эта функция ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ принСсти ΠΏΠΎΠ»ΡŒΠ·Ρƒ сайтам, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ HTTP / 2. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ A / B-тСстированиС этой ΠΎΠΏΡ†ΠΈΠΈ Π½Π° вашСм сайтС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ влияниС Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ страницы.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ встроСнный CSS

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ пСрСмСстит встроСнный CSS Π² Ρ„Π°ΠΉΠ» CSS Π°Π²Ρ‚ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π₯отя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ встроСнного CSS Π² Ρ„Π°ΠΉΠ» CSS с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ страницы, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…: URI для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Когда эта опция Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Autoptimize Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² base64 нСбольшиС Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ изобраТСния ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π² CSS.ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΎΠΏΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ влияниС Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вашСй страницы. Π₯отя ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ base64 сниТаСт количСство HTTP-запросов, Ρ„Π°ΠΉΠ»Ρ‹ прСдставлСний base64 ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π° 20-30% большС, Ρ‡Π΅ΠΌ ΠΈΡ… Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ.

ВстроСнный ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ CSS

ВстраиваниС критичСского CSS ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ скорости для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сайтов. ИдСя здСсь Π² встроСнных стилях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для элСмСнтов, находящихся Β«Π½Π°Π΄ сгибом». На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ встроСнный CSS ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ элСмСнты, ΠΊΠ°ΠΊ структурныС элСмСнты, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ сСмСйства ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ стили Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ.

Встраивая эти ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ элСмСнты, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ ΠΏΠΎΠ»Π½Ρ‹ΠΉ CSS-Ρ„Π°ΠΉΠ» ΠΏΠΎΠ·ΠΆΠ΅, Π½Π΅ влияя Π½Π° внСшний Π²ΠΈΠ΄ страницы. Π₯отя критичСскиС стили ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ инструмСнт для создания стилСй Π² качСствС ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ.

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ критичСский CSS.

ПослС создания критичСского CSS скопируйтС ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π² настройки Π°Π²Ρ‚ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ CSS Π² Autoptimize.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° интСрфСйса вашСго сайта.Если Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ странныС Π²ΡΠΏΡ‹ΡˆΠΊΠΈ нСстилизованного содСрТимого (FOUC), Π²Π°ΠΌ, вСроятно, потрСбуСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти нСстилированныС элСмСнты ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ стили Π² Autoptimize для встраивания.

Autoptimize ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ «усилСниС», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ критичСский CSS для Π²Π°ΡˆΠΈΡ… страниц WordPress. По Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, эта функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π°ΠΌΠ΅Π΄Π»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ вашСго сайта, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ внСшниС Π²Ρ‹Π·ΠΎΠ²Ρ‹ API для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ критичСски Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ CSS. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ критичСская гСнСрация CSS зависит ΠΎΡ‚ скорости ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° внСшнСго сСрвСра.Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API, являСтся Π±ΠΎΠ»Π΅Π΅ чистым Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

Π’ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС CSS

Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° сайтов ΠΌΡ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ вСсь CSS, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ страницы. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, встраиваниС всСго CSS Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ CSS Π² Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ CSS ΠΈΠ· автоматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Autoptimize ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ CSS ΠΈΠ· агрСгирования. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция Autoptimize Π½Π΅ объСдиняла ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² CSS, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π² этот список.Подобно ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ JavaScript, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ прСпятствуСт ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² CSS, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

  • WP-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ / кСш /
  • WP-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ / Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ /
  • Π°Π΄ΠΌΠΈΠ½-bar.min.css
  • dashicons.min.css

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ HTML

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ HTML

Autoptimize ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π°ΡˆΠΈΡ… страниц Π·Π° счСт удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ HTML Π² Autoptimize.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTML-ΠΊΠΎΠ΄

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTMLΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ страницы Π·Π° счСт удалСния Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² HTML.Π₯отя эта функция совмСстима с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ сайтов, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сбои Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сайтах. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ HTML-ΠΊΠΎΠ΄Π°, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² производствСнной срСдС.

ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π±ΡŽΠ»Π»Π΅Ρ‚Π΅Π½ΡŒ

ΠœΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ наш Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° 1187% с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WordPress.

ΠœΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ 20 000+ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΊΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π°ΡˆΡƒ Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ рассылку с инсайдСрскими совСтами ΠΏΠΎ WordPress!

ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ сСйчас
Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ HTML

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ HTML для своих ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… страниц.

ΠžΠΏΡ†ΠΈΠΈ CDN

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ CDN, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ KinstaCDN, для ускорСния статичСских рСсурсов, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ URL-адрСс CDN Π² Autoptimize. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ прокси-сСрвис с возмоТностями CDN, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Cloudflare, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… CDN Autoptimize.

НастройтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ CDN Π² Autoptimize.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ кэшС

Β«Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ кСшС»

Autoptimize ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Π°ΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊΡƒΡŽ ​​как располоТСниС ΠΈ ΠΏΡ€Π°Π²Π° доступа ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ с кСшСм, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… стилСй ΠΈ скриптов.Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ «НСт» рядом с «МоТСм Π»ΠΈ ΠΌΡ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ?Β», Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ своСму хосту, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΠΏΠ°ΠΏΠΊΠΈ.

АвтоматичСская оптимизация кСша.

Π Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

Autoptimize ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… настроСк ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² CSS ΠΈ JS Π½Π° ваш сайт, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ придСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ настройки, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅.

Π Π°Π·Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Autoptimize.

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ скрипты / CSS ΠΊΠ°ΠΊ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠ°ΠΊ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹ локально.Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ это, Ссли ваш сСрвСр Π½Π΅ настроСн для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сТатия ΠΈ истСчСния срока дСйствия Ρ„Π°ΠΉΠ»ΠΎΠ².

Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ CSS ΠΈ JS

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Ρ„Π°ΠΉΠ»Ρ‹ CSS ΠΈ JS Π±Ρ‹Π»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Однако, Ссли Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… CSS ΠΈ JS, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту ΠΎΠΏΡ†ΠΈΡŽ.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для зарСгистрированных Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² / администраторов

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ рСсурсы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ администраторов.Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, Ссли Π²Ρ‹ тСстируСтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ автоматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊ зарСгистрированный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ изобраТСния Π² Autoptimize

Autoptimize ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с ShortPixel для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ настройкС качСства изобраТСния интСграция Autoptimize Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ вСрсии Π²Π°ΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ WEBP.

Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Kinsta ΠΌΡ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ изобраТСния Π² Autoptimize. ВмСсто этого ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΎΡ‚ ShortPixel ΠΈΠ»ΠΈ Imagify.Π‘ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ настройками ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для использования Ρ‚Π΅Π³Π° , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ WEBP Π½Π° Kinsta.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ с ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ автоматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

Autoptimize Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страниц с большим количСством ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Когда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° отлоТСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, Autoptimize позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ классы ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΡ‹, Π·Π½Π°Ρ‡ΠΊΠΈ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π°ΠΆΠ½Ρ‹Ρ… элСмСнтов изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ слСдуСт Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π»Π΅Π½ΠΈΠ²ΠΎ. Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ больший ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с нашим руководством ΠΏΠΎ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π² WordPress.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Autoptimize

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Autoptimize.

Google Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹

Autoptimize ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² Google.Π›ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для вас Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ваш сайт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Google.

  • ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ.
  • Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Google.
  • Π‘ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅.
  • ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅.
  • Асинхронно ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ с webfont.js.

НС рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ Π΄Π°Π΅Ρ‚ прСимущСства Π² скорости.

Если ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Google Fonts Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для вашСго сайта, ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ использованиС вмСсто Π½ΠΈΡ… систСмного стСка ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ влияниС Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вашСй страницы.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Google Π½Π° своСм сайтС, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ послСдниС Ρ‚Ρ€ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСго сайта.

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ смайлы

Π­Ρ‚Π° опция автоматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ удаляСт CSS ΠΈ JavaScript, связанныС с основными смайликами WordPress. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ страницы. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ со стСками ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ смайлики. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эмодзи Π½Π° вашСм сайтС WordPress.

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ строки запроса ΠΈΠ· статичСских рСсурсов

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строки запроса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,? Ver =) ΠΈΠ· статичСских рСсурсов, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту ΠΎΠΏΡ†ΠΈΡŽ. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ строк запроса Π½Π΅ повлияСт Π½Π° врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ вашСго сайта Π² GTmetrix, Google Pagespeed ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… слуТбах тСстирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ сторонним Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° preconnect позволяСт Π²Π°ΡˆΠ΅ΠΌΡƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ DNS-запросов ΠΈ согласования SSL-подтвСрТдСния ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ HTTP-запроса.

НапримСр, Ссли Π½Π° вашСм сайтС Π΅ΡΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обслуТиваСтся с https://site.kinsta.cdn.com/logo.png , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Autoptimize Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ preconnect для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ DNS ΠΈ SSL Π² элСмСнт ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ HTTP-запроса Π² элСмСнтС вашСго HTML.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ инспСктор вашСго Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ внСшниС Π΄ΠΎΠΌΠ΅Π½Ρ‹ для ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. На ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ страницС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΅ΡΡ‚ΡŒ внСшниС запросы ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ.

  • https://cdn.brianli.com
  • https://www.google-analytics.com
  • https://www.googletagmanager.com

Π­Ρ‚ΠΈ Ρ‚Ρ€ΠΈ Π΄ΠΎΠΌΠ΅Π½Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² список ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Autoptimize.

НайдитС внСшниС рСсурсы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

По сообраТСниям ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡˆΠ΅ΡΡ‚ΠΈ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² Π² список ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Autoptimize, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для слишком большого количСства Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… запросов
Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹

Preload ΠΏΡ€Π΅Π΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ рСсурс. Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΏΠΎΠ»Π΅Π·Π½Π° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² самом Π½Π°Ρ‡Π°Π»Π΅ процСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², загруТая ΠΈΡ… Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Ρ‹ Π² CSS страницы.

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Ρ‹, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½Π° ваш сайт WordPress.Как ΠΈ Π² случаС со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ настройками, связанными с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° слишком большого количСства рСсурсов ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ вашСго сайта.

АсинхронныС Ρ„Π°ΠΉΠ»Ρ‹ JavaScript
Ѐункция «асинхронныС Ρ„Π°ΠΉΠ»Ρ‹ JavaScriptΒ» Π²

Autoptimize позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ внСшниС Ρ„Π°ΠΉΠ»Ρ‹ JavaScript для асинхронной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π° async HTML. Π₯отя асинхронная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² JS ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страниц, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ провСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ тСстированиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это Π½Π΅ влияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ сайта.

Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Autoptimize, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ этот ΠΏΠ»Π°Π³ΠΈΠ½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ WordPress Π½Π° свой сайт ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС послС прочтСния этого руководства πŸš€ΠΠ°ΠΆΠΌΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π²ΠΈΡ‚Π½ΡƒΡ‚ΡŒ

Π‘Π²ΠΎΠ΄ΠΊΠ°

Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ»Π°Π³ΠΈΠ½ Autoptimize — Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ WordPress, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сайта.

Обладая Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ функциями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ оптимизация HTML ΠΈ CSS, ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ интСграция с CDN ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ preconnect ΠΈ preload, Autoptimize ΠΈΠΌΠ΅Π΅Ρ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ внСшнСго интСрфСйса вашСго сайта WordPress.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ WordPress ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСго сайта, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с нашим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ руководством ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ WordPress.


Если Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ эта ΡΡ‚Π°Ρ‚ΡŒΡ, Ρ‚ΠΎ Π²Π°ΠΌ понравится хостинговая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Kinsta WordPress.Π£ΡΠΊΠΎΡ€ΡŒΡ‚Π΅ свой сайт ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΡ€ΡƒΠ³Π»ΠΎΡΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΎΡ‚ нашСй ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ WordPress. Наша инфраструктура Π½Π° Π±Π°Π·Π΅ Google Cloud ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° автоматичСскоС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ Π½Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² Kinsta! ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с нашими Ρ‚Π°Ρ€ΠΈΡ„Π°ΠΌΠΈ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ изобраТСния | Next.js

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Начиная с вСрсии 10.0.0 , Next.js ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ изобраТСния ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ изобраТСния.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ изобраТСния Next.js, next / image , являСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ элСмСнта HTML , Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ для соврСмСнной сСти.

АвтоматичСская оптимизация ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ изобраТСния Π² соврСмСнных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ WebP, Ссли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ это. Π­Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° устройства с мСньшим ΠΎΠΊΠ½ΠΎΠΌ просмотра. Он Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Next.js автоматичСски ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ эти Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹.

АвтоматичСская оптимизация изобраТСния Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π»ΡŽΠ±Ρ‹ΠΌ источником изобраТСния. Π”Π°ΠΆΠ΅ Ссли ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π²ΠΎ внСшнСм источникС Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ CMS, Π΅Π³ΠΎ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ВмСсто ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π²ΠΎ врСмя сборки Next.js ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ изобраТСния ΠΏΠΎ запросу, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² статичСских сайтов ΠΈ статичСских Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, врСмя сборки Π½Π΅ увСличиваСтся, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π»ΠΈ 10 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ 10 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ изобраТСния Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вашСй страницы Π½Π΅ сниТаСтся для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ области просмотра. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ просмотра.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ всСгда ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ кумулятивного сдвига ΠΌΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ элСмСнта сСти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Google собираСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ранТирования Π² поискС.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ next / image :

  ΠΈΠΌΠΏΠΎΡ€Ρ‚ изобраТСния ΠΈΠ· 'next / image'

function Home () {
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (
    <>
       

Моя домашняя страница

<Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ src = "/ me.png" alt = "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€Π°" ΡˆΠΈΡ€ΠΈΠ½Π° = {500} высота = {500} />

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° мою домашнюю страницу!

) } экспорт ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄ΠΎΠΌΠΎΠΉ

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ всСх свойств, доступных для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° next / image .

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ использованию свойств, доступных для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° next / image , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ изобраТСния для Π±ΠΎΠ»Π΅Π΅ слоТных случаСв использования Ρ‡Π΅Ρ€Π΅Π· next.config.js .

Π”ΠΎΠΌΠ΅Π½Ρ‹

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π½Π° внСшнСм Π²Π΅Π±-сайтС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ URL-адрСс для изобраТСния src ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для прСдотвращСния Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΉ внСшними URL-адрСсами. Когда Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ настроСн Π½Π° внСшний сСрвис ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ игнорируСтся.

  module.exports = {
  ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ: {
    Π΄ΠΎΠΌΠ΅Π½Ρ‹: ['example.com'],
  },
}
  

ΠŸΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ вмСсто использования встроСнной Π² Next.js ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈ прСфикс ΠΏΡƒΡ‚ΠΈ. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ URL-адрСса для Image src ΠΈ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ URL-адрСс для вашСго ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°.

  module.exports = {
  ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ: {
    Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ: 'imgix',
    ΠΏΡƒΡ‚ΡŒ: 'https: // example.com / myaccount / ',
  },
}
  

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

  • Vercel: Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ автоматичСски ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ Π½Π° Vercel, настройка Π½Π΅ трСбуСтся. Π£Π·Π½Π°Ρ‚ΡŒ большС
  • Imgix: Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ: imgix
  • Cloudinary: Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ: cloudinary
  • Akamai: ΠΏΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ: 'akamai'
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: автоматичСски Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с next dev , next start ΠΈΠ»ΠΈ настраиваСмым сСрвСром

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ prop с next / image .

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° next / image Π½Π΅ поддСрТиваСтся ΠΏΡ€ΠΈ использовании next export . Однако ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°.

НиТС описан Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ вашСго ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ динамичСски ΠΏΠΎ запросу ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ / cache / images . ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» изобраТСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запросов, ΠΏΠΎΠΊΠ° Π½Π΅ истСчСт срок Π΅Π³ΠΎ дСйствия.Когда дСлаСтся запрос, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ, Π½ΠΎ просрочСнному Ρ„Π°ΠΉΠ»Ρƒ, ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» удаляСтся ΠΏΠ΅Ρ€Π΅Π΄ созданиСм Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Π‘Ρ€ΠΎΠΊ дСйствия (ΠΈΠ»ΠΈ, скорСС, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ возраст) опрСдСляСтся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Cache-Control Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ сСрвСра.

Если s-maxage находится Π² Cache-Control , ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Если s-maxage Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ max-age . Если max-age Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 60 сСкунд.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ deviceSizes ΠΈ imageSizes , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ количСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… сгСнСрированных ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ конфигурация ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ трСбуСтся. Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ свойства, Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π»ΡŽΠ±Ρ‹Π΅ измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Next.js Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… обновлСниях.

Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ устройства

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ устройства ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ вашСго Π²Π΅Π±-сайта, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ список ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ устройства с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства deviceSizes .Π­Ρ‚ΠΈ значСния ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ next / image ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ layout = "responsive" ΠΈΠ»ΠΈ layout = "fill" , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° устройствС, ΠΏΠΎΡΠ΅Ρ‰Π°ΡŽΡ‰Π΅ΠΌ ваш Π²Π΅Π±-сайт, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Если конфигурация Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅.

  module.exports = {
  ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ: {
    deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
  },
}
  

Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ изобраТСния

Бписок ΡˆΠΈΡ€ΠΈΠ½Ρ‹ изобраТСния ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства imageSizes .Π­Ρ‚ΠΈ значСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ мСньшС) ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ deviceSizes , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массивы Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹. Π­Ρ‚ΠΈ значСния ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ next / image ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ layout = "fixed" ΠΈΠ»ΠΈ layout = "intrinsic" .

Если конфигурация Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅.

  module.exports = {
  ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ: {
    imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
  },
}
  

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… дСйствиях ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹:

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Β· Bootstrap v5.0

Lean Sass ΠΈΠΌΠΏΠΎΡ€Ρ‚

ΠŸΡ€ΠΈ использовании Sass Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π΅ рСсурсов ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Bootstrap, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ @import Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π²Π°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Π°ΡˆΠΈ самыС большиС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, вСроятно, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° Layout & Components нашСго bootstrap.scss .

  // ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ
@import "Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ";
@import "ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅";
@import "миксины";
@import "ΠΊΠΎΠΌΠΌΡƒΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ услуги";

// ΠœΠ°ΠΊΠ΅Ρ‚ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
@import "ΠΊΠΎΡ€Π΅Π½ΡŒ";
@import "ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°";
@import "Ρ‚ΠΈΠΏ";
@import "изобраТСния";
@import "ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹";
@import "сСтка";
@import "Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹";
@import "Ρ„ΠΎΡ€ΠΌΡ‹";
@import "ΠΊΠ½ΠΎΠΏΠΊΠΈ";
@import "ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹";
@import "Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список";
@import "Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ";
@import "nav";
@import "навигационная панСль";
@import "ΠΊΠ°Ρ€Ρ‚Π°";
@import "Π°ΠΊΠΊΠΎΡ€Π΄Π΅ΠΎΠ½";
@import "Ρ…Π»Π΅Π±Π½Ρ‹Π΅ ΠΊΡ€ΠΎΡˆΠΊΠΈ";
@import "Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° Π½Π° страницы";
@import "Π·Π½Π°Ρ‡ΠΎΠΊ";
@import "ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅";
@import "прогрСсс";
@import "список-Π³Ρ€ΡƒΠΏΠΏΠ°";
@import "Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ";
@import "тосты";
@import "ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ";
@import "подсказка";
@import "Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ";
@import "ΠΊΠ°Ρ€ΡƒΡΠ΅Π»ΡŒ";
@import "блСсны";
@import "offcanvas";

// ΠŸΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΈ
@import "ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΈ";

// Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹
@import "ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ / api";
  

Если Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.НапримСр, Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°Ρ€ΡƒΡΠ΅Π»ΡŒ, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ этот ΠΈΠΌΠΏΠΎΡ€Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Π² скомпилированном CSS. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ Sass Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ пропуск Ρ„Π°ΠΉΠ»Π°.

Lean JavaScript

JavaScript

Bootstrap Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² Π½Π°ΡˆΠΈΡ… основных Ρ„Π°ΠΉΠ»Π°Ρ… dist ( bootstrap.js ΠΈ bootstrap.min.js ) ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°ΡˆΡƒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (Popper) с нашими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ( bootstrap.bundle.js ΠΈ bootstrap. .bundle.min.js ). Пока Π²Ρ‹ настраиваСтС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Sass, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ связанный JavaScript.

НапримСр, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ собствСнный ΠΏΠ°ΠΊΠ΅Ρ‚ JavaScript, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Webpack ΠΈΠ»ΠΈ Rollup, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, ΠΊΠ°ΠΊ просто Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ наш ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ JavaScript:

  // Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ

// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / alert';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / button';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / carousel';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / collapse';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / dropdown';
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 'bootstrap / js / dist / modal';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / popover';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / scrollspy';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / tab';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / toast';
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ 'bootstrap / js / dist / tooltip';
  

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ, карусСли ΠΈ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки.Если Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ списки, Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки ΠΈΠ»ΠΈ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΊΠ½Π°, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Popper Π² Ρ„Π°ΠΉΠ»Π΅ package.json .

Экспорт ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π€Π°ΠΉΠ»Ρ‹ Π² bootstrap / js / dist ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ экспорт ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ , поэтому, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ…, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  ΠΈΠΌΠΏΠΎΡ€Ρ‚ модального ΠΎΠΊΠ½Π° ΠΈΠ· bootstrap / js / dist / modal

const modal = Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ (document.getElementById ('myModal'))
  

АвтопрСфиксатор .browserslistrc

Bootstrap зависит ΠΎΡ‚ Autoprefixer для автоматичСского добавлСния прСфиксов Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ свойствам CSS.ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΡ‹ ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½Ρ‹ нашим Ρ„Π°ΠΉΠ»ΠΎΠΌ .browserslistrc , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΊΠΎΡ€Π½Π΅ рСпозитория Bootstrap. Настройка этого списка Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ пСрСкомпиляция Sass автоматичСски ΡƒΠ΄Π°Π»ΠΈΡ‚ Ρ‡Π°ΡΡ‚ΡŒ CSS ΠΈΠ· вашСго скомпилированного CSS, Ссли Π΅ΡΡ‚ΡŒ прСфиксы поставщика, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ для этого Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈΠ»ΠΈ вСрсии.

ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ CSS

ВрСбуСтся ΠΏΠΎΠΌΠΎΡ‰ΡŒ с этим Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ открытия PR. Бпасибо!

Π₯отя Ρƒ нас Π½Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования PurgeCSS с Bootstrap, Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… статСй ΠΈ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Ρ… руководств, написанных сообщСством.Π’ΠΎΡ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²:

НаконСц, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ CSS Tricks ΠΎ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ CSS ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PurgeCSS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструмСнты.

Minify ΠΈ gzip

По возмоТности ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сТимайтС вСсь ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ своим посСтитСлям. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ дистрибутива Bootstrap, ΠΏΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… вСрсий (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ .min.css ΠΈ .min.js ). Если Π²Ρ‹ собираСтС Bootstrap ΠΈΠ· исходного ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ собствСнной систСмы сборки, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ собствСнныС ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ для HTML, CSS ΠΈ JS.

ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹

Π₯отя минимизация ΠΈ использованиС сТатия ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ достаточным, созданиС Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² для Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ являСтся большим шагом ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш сайт Π±Ρ‹Π» Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ достаточно быстрым.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ Lighthouse Π² Google Chrome, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π½Π°Ρ‚ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π½Π° FCP. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ° First Contentful Paint измСряСт врСмя с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы Π΄ΠΎ отобраТСния Π½Π° экранС любой части содСрТимого страницы.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ FCP, ΠΎΡ‚Π»ΠΎΠΆΠΈΠ² Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ JavaScript ΠΈΠ»ΠΈ CSS.Π§Ρ‚ΠΎ это ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚? ΠŸΡ€ΠΎΡΡ‚ΠΎ JavaScript ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ отрисовкС вашСй страницы, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ async ΠΈΠ»ΠΈ defer .

Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ рСсурсы Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ отрисовку. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, критичСски Π²Π°ΠΆΠ½Ρ‹Π΅ рСсурсы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ встроСнных скриптов ΠΈΠ»ΠΈ стилСй.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом большС, ΠΎΠ± этом ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… статСй:

ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTTPS

Π’Π°Ρˆ Π²Π΅Π±-сайт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· HTTPS-соСдинСния Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСдС.HTTPS ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ всСх сайтов, ΠΈ Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ Π½Π΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π΅Π±-Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π¨Π°Π³ΠΈ ΠΏΠΎ настройкС вашСго Π²Π΅Π±-сайта для обслуТивания ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· HTTPS сильно Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ вашСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Π²Π΅Π±-хостинга ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ этих Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π‘Π°ΠΉΡ‚Ρ‹

, обслуТиваСмыС ΠΏΠΎ HTTPS, Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊΠΎ всСм Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ стилСй, скриптам ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ рСсурсам Ρ‡Π΅Ρ€Π΅Π· HTTPS-соСдинСния. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ уязвимостям, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сайт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π·Π»ΠΎΠΌΠ°Π½ ΠΏΡƒΡ‚Π΅ΠΌ измСнСния зависимости.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Bootstrap ΠΈΠ· CDN ΠΈΠ»ΠΈ обслуТиваСтС Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ доступ ΠΊ Π½Π΅ΠΌΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· HTTPS-соСдинСния.

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *