Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

ΠšΡ‚ΠΎ Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ, Service Worker?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Service Worker: Π― ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ сСтСвой проксификатор.

Service Worker Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΡ€ΡƒΡ‚ΠΎ, Π½ΠΎ я Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎ понимаю Ρ‡Ρ‚ΠΎ это

Π’ июлС 2015 я участвовала Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ΠΏΠΎ JavaScript, ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ²ΡˆΠ΅ΠΉ Π² Π³ΠΎΡ€ΠΎΠ΄Π΅ ΠžΡΡ‚ΠΈΠ½, ΡˆΡ‚Π°Ρ‚ ВСхас. На сцСнС β€” Π”ΠΆΠ΅ΠΉΠΊ ΠΡ€Ρ‡ΠΈΠ±Π°Π»ΡŒΠ΄, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΎΠ³Π΄Π° я Π·Π½Π°Π»Π° ΠΊΠ°ΠΊ Π·Π°Π±Π°Π²Π½ΠΎΠ³ΠΎ британского парня, Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Ρ ΠΏΠΎΡˆΡƒΡ‚ΠΈΡ‚ΡŒ Π½Π° β€œΡ‚ΡƒΠ°Π»Π΅Ρ‚Π½ΡƒΡŽ тСму” 🚽. Π£ΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΌ я поняла, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ сСбС β€œΠ²Π°ΠΆΠ½Ρ‹ΠΉ чувак” ΠΈ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² спСцификации Service Worker’ов.

И Π²ΠΎΡ‚ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ истории ΠΎΠ± UX-ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½ΠΈΠΈ, Π½Π°ΡΡ‚ΠΈΠ³Π½ΡƒΠ²ΡˆΠ΅ΠΌ Π΅Π³ΠΎ Π² общСствСнном Ρ‚ΡƒΠ°Π»Π΅Ρ‚Π΅, Π”ΠΆΠ΅ΠΉΠΊ рассказал Π·Π°Π»Ρƒ ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΡˆΡ‚ΡƒΠΊΠ΅, Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ Service Worker. Π¨Ρ‚ΡƒΠΊΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²Π΅Π±-сайту вСсти сСбя ΠΊΠ°ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³Π΄Π° я поняла Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ).

Π’ΠΎ, ΠΎ Ρ‡Π΅ΠΌ ΠΎΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Π·Π²ΡƒΡ‡Π°Π»ΠΎ нСвСроятно, ΠΈ ΠΌΠ½Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Π½Π° своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π‘Π½Π°Ρ‡Π°Π»Π° Π±Ρ‹Π»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ это… Π­Ρ‚ΠΎ Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π½Π΅ Π½ΠΎΠ²Ρ‹ΠΉ HTML элСмСнт ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ Π½ΠΎΠ²Ρ‹ΠΉ JavaScript синтаксис, Π° Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΊΠ°ΠΊ β€œΠΊΡΡˆβ€ ΠΈΠ»ΠΈ β€œΠΏΡ€ΠΎΠΊΡΠΈβ€ всСгда ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ мСня Π² Π·Π°ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ. ΠŸΡ‹Ρ‚Π°ΡΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ Service Worker’а, я Π΄Π΅Π»Π°Π»Π° ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π° Π±ΡƒΠΌΠ°Π³Π΅, ΠΈ ΠΌΠ½Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΏΡ€ΠΈΡˆΠ»Π° идСя ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с β€œΠΏΡ€ΠΈΡˆΠ΅Π»ΡŒΡ†Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ ΠΏΠΎΠΆΠΈΡ‚ΡŒ Π² вашСм браузСрС”. Π—Π²ΡƒΡ‡ΠΈΡ‚ странно? Π’ΠΎΠ³Π΄Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ.

S ervice Worker β€” ΠΏΡ€ΠΈΡˆΠ΅Π»Π΅Ρ† Π²ΠΎ всСлСнной Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅: ваш Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ β€” это ΠΏΠ»Π°Π½Π΅Ρ‚Π° (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π—Π΅ΠΌΠ»ΠΈ), частица большой Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π›ΡŽΠ΄ΠΈ Π½Π° этой ΠΏΠ»Π°Π½Π΅Ρ‚Π΅ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°ΡŽΡ‚ Π½Π° своих языках, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ HTML, CSS ΠΈ JavaScript, благодаря ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ сообщСства β€” Π²Π΅Π± страницы.

И Ссли Π²Ρ‹ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ эти сообщСства: начиная ΠΎΡ‚ ΠΈΡ… Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… элСмСнтов ΠΈ DOM Π΄Π΅Ρ€Π΅Π²Π° ΠΈ заканчивая Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ обновлСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° вашСм сайтС.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

На этой ΠΏΠ»Π°Π½Π΅Ρ‚Π΅ (Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅) Π±Ρ‹Π» ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ способ общСния с внСшним ΠΌΠΈΡ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊ (сСрвСров). Π•Π³ΠΎ Π½Π°Π·Π²Π°Π»ΠΈ Hyper Text Transfer Protocol. ИмСнно Ρ‚Π°ΠΊ ваша ΠΏΠ»Π°Π½Π΅Ρ‚Π°-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ Π² ΠΊΠΎΠΏΠΈΠ»ΠΊΡƒ ΠΌΠΈΠ»Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ с котятами ΠΈ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ‚Π²ΠΈΡ‚ΠΎΠ². И ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ ΠΎΠ½Π° смогла ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡ΡŒ ΠΊ сСбС ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ постоянных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

HTTP ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π½Π΅Π²Π΅Ρ€ΠΎΡΡ‚Π½ΡƒΡŽ Π²ΠΎΠ»ΡˆΠ΅Π±Π½ΡƒΡŽ Π²Π΅Ρ‰ΠΈΡ†Ρƒ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»Π΅Π½Ρ‡Π°Ρ‚Ρ‹ΠΉ Ρ‚Ρ€ΡƒΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄. Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ обСспСчиваСт Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ сообщСниС с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ сСрвСрами-Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ. Π”Π»ΠΈΠ½Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Π²Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρƒ), ΠΈ ΠΎΡ‚ качСства инфраструктуры Π² вашСм Ρ€Π΅Π³ΠΈΠΎΠ½Π΅. Если ваша Ρ‚Ρ€ΡƒΠ±Π° узкая ΠΈΠ»ΠΈ слишком длинная, Ρ‚ΠΎ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π½Π° Π²Π°ΡˆΡƒ ΠΏΠ»Π°Π½Π΅Ρ‚Ρƒ дольшС.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Но Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΉ оказываСтся ΠΈ вовсС нСдоступным для вашСго Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Π’ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹ ваша ΠΏΠ»Π°Π½Π΅Ρ‚Π° возвращаСтся Π² Π΄ΠΎΠΈΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ эпоху, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· соврСмСнных Π²Π΅Ρ‰Π΅ΠΉ Π²Π°ΠΌ Π½Π΅ доступны, Π° ваш Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π΄ΠΈΠ½ΠΎΠ·Π°Π²Ρ€ΠΎΠ², ΠΊΠ°ΠΊ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ β€œΡΡ‚Π°Ρ€Ρ‹Ρ… добрых”.

Но ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅! Service Worker ΡƒΠΆΠ΅ здСсь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π’Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π·Π½Π°Ρ‚ΡŒ ΠΎ вашСм Π½ΠΎΠ²ΠΎΠΌ приятСлС.

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ для вас Service Worker?

1. ВзаимодСйствиС с кэшСм

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Service Worker ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ fetch events ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ рСсурсы Π² кэшС. ПозТС, ΠΊΠΎΠ³Π΄Π° эти рСсурсы понадобятся, ΠΎΠ½ пСрСдаст ΠΈΡ… Π²Π°ΡˆΠ΅ΠΌΡƒ сайту, Π° Π΄Π΅Π»Π°Ρ‚ΡŒ внСшний HTTP-запрос Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ смоТСт ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π²Π΅Π±-страниц Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ отсутствии ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

2. Push-увСдомлСния

Благодаря ΠΌΠ°Π³ΠΈΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Service Worker Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ всСгда Π±Ρ‹Ρ‚ΡŒ Π² курсС, получая push-увСдомлСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

3. Ѐоновая синхронизация

ΠΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Service Worker Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½Π΅ отвлСкая внимания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ процСссы. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Π΅Π±-страницу, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ offline, Π½ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ». Π’Π°ΠΊ Π²ΠΎΡ‚, Service Worker сам ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ Ρ„Π°ΠΉΠ» Π½Π° сСрвСр, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ станСт доступСн снова.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

НСкоторыС тонкости использования Service Workers

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅

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

Однако большоС количСство статСй ΠΏΡ€ΠΎ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ выглядят достаточно сТато ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ простыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ², Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания. ΠžΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эта ΡΡ‚Π°Ρ‚ΡŒΡ (ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄) ΠΈΠ»ΠΈ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ подробная ΡΡ‚Π°Ρ‚ΡŒΡ.

НСсколько сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅

Π£ рСгистрации (registration) ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ понятиС, ΠΊΠ°ΠΊ scope. Оно опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ страницы Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Π΅Ρ‘ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ. ΠŸΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅, Π½ΠΎ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ scope. Если ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ scope, Ρ‚ΠΎ установлСнный ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Β«Π·Π°ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΒ» своСго Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅Π³ΠΎ Π±Ρ€Π°Ρ‚Π°.

ΠšΡΡ‚Π°Ρ‚ΠΈ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² качСствС сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ Π²Ρ‹ΡˆΠ΅ (Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ β€” Π½Π΅Ρ‚), Ρ‚ΠΎ для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ http-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Service-Worker-Allowed.

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

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Ρƒ нас Π΅ΡΡ‚ΡŒ установлСнный сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ со scope /. ΠŸΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ новостной сайт ΠΈ ΠΌΡ‹ прСдоставляСм ΠΎΡ„Ρ„Π»Π°ΠΉΠ½ΠΎΠ²Ρ‹Π΅ вСрсии тСкстов. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ панСль управлСния ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ /admin/ со своим собствСнным сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠΌ. Если Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Ρ‚ΠΎ getRegistaration() Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ошибкам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠ»Π°Ρ‚ΡŒ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠΏΠ°Π½Π΅Π»ΠΈ администратора Π² сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€, Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ Π½ΠΈΠΌ вовсС).

getRegistration ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€” scope. Если Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Ρ‘Ρ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ (Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π²Π½ΡƒΡŽ) ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΌΡƒ scope. Π’Π΅ΠΌ самым ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… страницах ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π»ΡŽΠ±Ρ‹Π΅ рСгистрации с Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°, Π½ΡƒΠΆΠ½ΠΎ лишь Π·Π½Π°Ρ‚ΡŒ подходящиС scope.

А Ссли ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ всС scope, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ getRegistrations(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС рСгистрации с Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π² Π²ΠΈΠ΄Π΅ массива. ВрСбуСтся Firefox ΠΈΠ»ΠΈ Chrome 45+.

Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ страницСй ΠΈ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠΌ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠΌ ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Ρ‘Π½Π½ΠΎΠΉ страницСй ΠΌΠΎΠΆΠ΅Ρ‚ привСсти довольно ΠΊ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ схСмам Ρ€Π°Π±ΠΎΡ‚Ρ‹. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΏΡ€ΠΈΡΡ‹Π»Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· кСша, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ Π½ΠΎΠ²Ρ‹Π΅; ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ β€” ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΡ… Π² кСш ΠΈ ΠΏΡ€ΠΈΡΠ»Π°Ρ‚ΡŒ Π½Π° страницу.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° serviceworke.rs ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ простой способ общСния с сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠΌ:

Π—Π΄Π΅ΡΡŒ controller β€” сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ страницу. Π’ свСТих Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… (всС вСрсии Firefox ΠΈ Chrome 51+) ΠΌΠΎΠΆΠ½ΠΎ достаточно просто ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° Ρ‚Π°ΠΊΠΎΠΉ запрос:

Π’ Π±ΠΎΠ»Π΅Π΅ старых вСрсиях ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ всС Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ, Π° Ρ‚ΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€ΡƒΠΊΠ°ΠΌΠΈ MessageChannel. Π’Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСниС Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΈΠ· события fetch. Всё это описано Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ соврСмСнноС Π°ΠΏΠΈ Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π΅. Π›ΡŽΠ΄ΠΈ, ΡƒΠΆΠ΅ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹, ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ LocalStorage Ρ‚Π°ΠΌ Π½Π΅Ρ‚. Всё ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°Ρ… Π±Ρ‹Π» взят курс Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ асинхронноС Π°ΠΏΠΈ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, importScripts). Но Π²Π½ΡƒΡ‚Ρ€ΠΈ всё Π΅Ρ‰Ρ‘ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ доступны:

Или ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ‚Π°ΠΊ, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… кСшСй.

Но ΠΏΡ€ΠΈ всём этом стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ 100% ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ…. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ CacheStorage ΠΈ indexedDB ΠΏΡ€ΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ΅ мСста Π½Π° дискС, Π΄Π° ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это сам.

ΠšΡ€ΠΎΡΡΠ΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ запросы ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅ взаимодСйствиС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ

Π‘ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ fetch ситуация ΠΌΠΎΠ³Π»Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ (Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ запроса/ΠΎΡ‚Π²Π΅Ρ‚Π°), Π° с сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°ΠΌΠΈ всё становится Π² Π΄Π²Π° Ρ€Π°Π·Π° слоТнСС: ΠΎΠ΄ΠΈΠ½ fetch Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π½Π° сторонС сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°.

Π‘Π°ΠΌΠΎΠ΅ простоС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄Ρ‚ΠΈ: Β«ΠΎΠ±ΠΌΠ°Π½ΡƒΡ‚ΡŒΒ» CORS ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ с Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π±Π΅Π· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π½Π΅ получится. Π’Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π²Π° Π²ΠΈΠ΄Π° использования: с доступом со стороны javascript ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ. НапримСр, ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² fetch сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° mode: ‘no-cors’ ΠΈ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ. Если Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ‘no-cors’, fetch Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ CORS Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ Π² случаС ΠΈΡ… отсутствия всё окончится ошибкой.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ строго, Ρ‚ΠΎ любой запрос (Request) со страницы ΠΈΠΌΠ΅Π΅Ρ‚ mode. НапримСр, запрос ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ β€” ‘no-cors’, Π° запрос ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ crossOrigin (anonymous ΠΈΠ»ΠΈ use-credentials) β€” ΡƒΠΆΠ΅ ‘cors’. Запросы Ρ‡Π΅Ρ€Π΅Π· XMLHttpRequest всСгда Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ‘cors’. А fetch позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

ΠžΡ‚Π²Π΅Ρ‚ (Response) ΠΈΠΌΠ΅Π΅Ρ‚ свойство type. Запросы Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π΄ΠΎΠΌΠ΅Π½ β€” ‘basic’. Π˜Π½Π°Ρ‡Π΅, Ссли Ρ€Π΅ΠΆΠΈΠΌ запроса β€” ‘cors’, Ρ‚ΠΎ type ΠΎΡ‚Π²Π΅Ρ‚Π° Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ‘cors’, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ². Π Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° ‘opaque’ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π° запрос Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ‘no-cors’, Π² Π½Ρ‘ΠΌ нСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π°.

Π—Π΄Π΅ΡΡŒ описаны Π½Π΅ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² запросов, Π½ΠΎ этого Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно для ΠΎΠ±Ρ‰Π΅Π³ΠΎ понимания. Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡Π΅Ρ€ΠΏΠ½ΡƒΡ‚ΡŒ ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ с описаниСм fetch.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ всё ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π‘ΠΎ страницы ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ запрос, Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ свой fetch, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚. Π”ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ситуация Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π°, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ нюанс: ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π° с Ρ‚ΠΈΠΏΠΎΠΌ ‘opaque’ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° запрос страницы. ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» сдСлан Π½Π΅ с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ ‘no-cors’, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Помимо просто запросов, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄ΠΎΠΌΠ΅Π½. НСт, ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ страницСй Ρ‡Π΅Ρ€Π΅Π· наш сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ β€” условия Π½Π° сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ (сам скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ Π΄ΠΎΠΌΠ΅Π½Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рСгистрируСтся Π²ΠΎΡ€ΠΊΠ΅Ρ€). Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ iframe с Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° β€” Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ трСбуСтся ΠΈ iframe ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ просто Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ.

Другая интСрСсная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, которая сСйчас находится Π² своСй Ρ€Π°Π½Π½Π΅ΠΉ вСрсии β€” Foreign Fetch. Если ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ запросы со страницы Π² своём scope (страница Π² scope, Π° Π½Π΅ запросы), Ρ‚ΠΎ foreign fetch позволяСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запросы Π½Π° свой Π΄ΠΎΠΌΠ΅Π½. Допустим, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ событиС fetch Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ запросС Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π½Π° CDN, Π° foreignFetch Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ всСх запросах Π·Π° этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π½Π° Π»ΡŽΠ±Ρ‹Ρ… сайтах! Π­Ρ‚ΠΎ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слуТбами Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ.

ВСстированиС

Π‘ написаниСм тСстов Π½Π° сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ слоТности. БоставлСниС тСста Π½Π΅ Ρ‚Π°ΠΊ просто: Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΡ„Ρ„Π»Π°ΠΉΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΡΠΌΡƒΠ»ΠΈΠΎΠ²Π°Ρ‚ΡŒ ошибки сСти, Ссли Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ β€” Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π½ΠΎΠ²Ρ‹ΠΌ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ состоят Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Β«Π±Π΅Π·Π³ΠΎΠ»ΠΎΠ²Ρ‹Π΅Β» Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π½ΡƒΠΆΠ½Ρ‹ настоящиС.

Π•ΡΡ‚ΡŒ стоящая ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π° Ρ‚Π΅ΠΌΡƒ тСстирования сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ². Π’ Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ ссылки ΠΈ Π½Π° ΠΏΠ°Ρ€Ρƒ инструмСнтов: sw-unit-test-sample ΠΈ platinum-sw (элСмСнт для Polymer, Π² Π½Ρ‘ΠΌ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ°Ρ€Π° тСстов). Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ описан интСрСсный ΠΏΡ€ΠΈΡ‘ΠΌ: созданиС ΠΈΡ„Ρ€Π΅ΠΉΠΌΠ° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ контролировался тСстируСмым сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠΌ. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Ρƒ элСмСнтов iframe ΠΈ object Π΅ΡΡ‚ΡŒ другая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ: запросы Π·Π° Π½ΠΈΠΌΠΈ ΠΈ ΠΈΡ… содСрТимым ΠΈΠ΄ΡƒΡ‚ Π² ΠΎΠ±Ρ…ΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° страницы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ собствСнныС сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹.

Π’ΠΎ, Ρ‡Ρ‚ΠΎ caches доступно Π½Π° самой страницС, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ тСстировании для очистки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ содСрТимого кСша.

Π’Π°ΠΆΠ½Ρ‹ΠΉ нюанс ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ автотСстов β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ страницу ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запросы. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ navigator.serviceWorker.ready Π½Π΅ всСгда являСтся Π²Π΅Ρ€Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ β€” ready срабатываСт Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ сСрвис Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°, Π½ΠΎ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ закончится Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ clients.claim(). Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описано здСсь, ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ β€” ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ событиС controllerchange.

ОбновлСниС сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°

Π•ΡΡ‚ΡŒ нСсколько нюансов ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

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

Π”Ρ€ΡƒΠ³ΠΎΠΉ нюанс: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ срабатываСт, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли сам скрипт сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° обновился, ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этого происходит ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎ. Из этого слСдуСт, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· importScripts, Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ обновлСнию самого сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°.

ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ часто Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² кСш ΠΈΠ· сСти ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹. Но ΠΏΡ€ΠΈ этом Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹ΠΉ кСш! Как ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π°Ρ… fetch Π²Π½ΡƒΡ‚Ρ€ΠΈ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°. НуТно Π»ΠΈΠ±ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ помСнялись (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ/Ρ…Π΅Ρˆ Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°), Π»ΠΈΠ±ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ рСсурсы Π² ΠΎΠ±Ρ…ΠΎΠ΄ кСша. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ рСсурсы Π² ΠΎΠ±Ρ…ΠΎΠ΄ кСша, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ»ΠΈ Ρ€ΡƒΠΊΠ°ΠΌΠΈ Π·Π²Π°Ρ‚ΡŒ fetch ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Π² кСш (Π½Π΅ забывая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ response.ok, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€), ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ cache: ‘no-cache’ Request’Π° (ΠΏΠΎΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Firefox Nightly). И Ρ‚ΠΎ ΠΈ Ρ‚ΠΎ описано Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Jake Archibald.

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ запрос Π·Π° скриптом сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈΠ΄Ρ‘Ρ‚ Π² ΠΎΠ±Ρ…ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события fetch Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Service Workers

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Service Workers (SW). SW ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, Π΄Π°ΠΆΠ΅ Ссли Ρƒ нас Π½Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ push-увСдомлСния ΠΈΠ»ΠΈ фоновая синхронизация. SW ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ послС закрытия Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Service Workers ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ процСсс. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ зарСгистрируСм нашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Service Worker’a.

(Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с SW, Π½Π° простом JS, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄ написан Π½Π° простом JS, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π»ΡŽΠ±Ρ‹Π΅ JS-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Angular, React ΠΈΠ»ΠΈ Vue)

Π’ качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ шага Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„Π°ΠΉΠ» sw.js Π² ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ app.js ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, доступСн Π»ΠΈ SW Π² Π½Π°Π²ΠΈΠ³Π°Ρ‚ΠΎΡ€Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π»ΠΈ SW Π΄Π°Π½Π½Ρ‹ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ SW доступны, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ navigator.serviceWorker.register (), указывая ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится наш SW, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ фактичСски Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Promise. Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ сдСлано, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ зарСгистрировали нашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ SW, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий. Как я ΡƒΠΆΠ΅ сказал, SW Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Но я Π½Π΅ упомянул ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‰ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ связаны с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ событий. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ событий ΠΊ SW, ΠΌΡ‹, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова self, Ρ‡Ρ‚ΠΎ Π² основном ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒ ΠΌΠ½Π΅ доступ ΠΊ SWΒ», Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ addEventListener (). SW Π½Π°Π΄Π°ΡŽΡ‚ доступ ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ событий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ установки, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ запускаСтся, ΠΊΠΎΠ³Π΄Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ устанавливаСт Service Worker’a. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ выполняСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ, ΠΈ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдоставляСт Π½Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ событии установки. Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, наш Service Worker ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ установлСн.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ эти Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π² кСш-ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ event.respondWith () позволяСт Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Service Worker’С ΠΊΠ°ΠΊ ΠΎ сСтСвом прокси, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ здСсь событиС fetch. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ исходящий запрос Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Service Worker, ΠΊΠ°ΠΊ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ, ΠΎΡ‚Π²Π΅Ρ‚ просто Π½Π΅ пСрСдаСтся. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ cashes.match () позволяСт Π½Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ Π»ΠΈ ΡƒΠΆΠ΅ Π΄Π°Π½Π½Ρ‹ΠΉ запрос. Если это Ρ‚Π°ΠΊ, ΠΎΠ½ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚. ΠœΡ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ сСтСвой запрос, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ запрос ΠΈ Π½Π΅ Π²Ρ‹Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ, вмСсто этого ΠΌΡ‹ просто смотрим Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, ΠΈ Π²ΠΈΠ΄ΠΈΠΌ, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ½ΠΎ Π² кСшС ΠΈ Ссли Π΅ΡΡ‚ΡŒ, ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли ΠΌΡ‹ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π² кСшС, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ запрос Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΌΡ‹ обращаСмся ΠΈΠ»ΠΈ Π³Π΄Π΅ ΠΌΡ‹ просто ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ исходный запрос, поэтому Π²Π΅Ρ€Ρ‚Π°Π΅ΠΌ fetch (event.request). ПослС всСх этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΡ‹ Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нашС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, нашС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ содСрТит Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ статичСскими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«ΠŸΠžΠ›Π£Π§Π˜Π’Π¬ ДАННЫЕ» Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ…ΠΎΡ‡Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΆΠ°Π² эту ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ статистичСскиС Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠ»ΠΈ ΠΈΡ… Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ сохранили эти Π΄Π°Π½Π½Ρ‹Π΅ Π² кСшС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ динамичСскоС ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π˜Ρ‚Π°ΠΊ, приступим. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ эндпоинт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ статистичСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚ΠΎΠΌ, сколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ посСтили наш сайт. Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·ΡΡ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ² Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Как ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, я добавлю Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ объясню, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚Π΅Π³ события. Π—Π°Ρ‚Π΅ΠΌ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ event.waitUntil (), ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, это просто позволяСт ΠΌΠ½Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ событиС Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΎΡΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π² indexedDB (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· utility.js), ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΡ…, отправляСм post запрос для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· сохраняСмых Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ удаляСм ΠΈΡ… ΠΈΠ· indexedDB, Ссли ΠΌΡ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΈΡ… Π½Π° сСрвСр. Π’ΠΎΡ‚ ΠΈ всС. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ это. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π² нашСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«POST DATAΒ» ΠΈ Π·Π°Ρ‚Π΅ΠΌ снова Π²Ρ‹ΠΉΡ‚ΠΈ Π² ΠΎΠ½Π»Π°ΠΉΠ½.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

ПослС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«POST DATAΒ», ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ Π² сСти, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ восстанавливаСтся, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ синхронизация Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

И Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° сСрвСр, Π½Π°ΠΌ сначала Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ наш запрос Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· динамичСского кСша ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΠžΠ›Π£Π§Π˜Π’Π¬ ДАННЫЕ».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

БСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ эффСктивнСС ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ рСсурсов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Ρ‹Π²Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-соСдинСния. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ вывСсти ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹

Service worker β€” это особый Ρ‚ΠΈΠΏ JavaScript Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой сцСнарий, выполняСмый Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Он ΠΏΠΎΡ…ΠΎΠΆ Π½Π° прокси-сСрвСр, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΈ ΡΠ΅Ρ‚ΡŒΡŽ. Помимо ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ прилоТСниям ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π² случаС ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ.

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

Как сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π£ всСх Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π»ΠΎ: Π²Ρ‹ просматриваСтС Π²Π΅Π±-сайт, Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ Π½Π° ссылку ΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π΅Ρ‚Π΅ΡΡŒ с ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠ΅ΠΉ сообщСния «НС удаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΡƒΒ». Π’Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π°Π·Π°Π΄ ΠΈ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС. Пока соСдинСниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ восстановлСно, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² dino runner, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Chrome. БСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сцСнария.

Одно ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… прСимущСств сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² β€” ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² ΠΎΡ„Ρ„Π»Π°ΠΉΠ½-Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ для обСспСчСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ API AppCache, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹, ΠΈ ΠΎΠ½ΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅.

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

Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹?

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² нСзависимы ΠΎΡ‚ вашСго сайта ΠΈΠ»ΠΈ прилоТСния. Π£ Π½ΠΈΡ… свой собствСнный ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ зарСгистрирован ΠΈΠ· JavaScript, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ установит Π΅Π³ΠΎ. Если ΠΎΠ½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сконфигурирован, Ρ‚ΠΎ Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС рСсурсы страницы Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π² ΠΈΠ½ΠΎΠΌ случаС Π²Π°ΠΌ придСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ установку.

Если установка ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, сцСнарий активируСтся ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ всСми страницами Π² своСй области видимости. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π», ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ²ΡˆΠ°Ρ Π΅Π³ΠΎ страница Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ. ПослС этого ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя состояниями: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий fetch ΠΈ message ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ для экономии памяти.

НСобходимыС условия

БСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ β€” Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ тСхнология ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, Π½ΠΎ ΠΎΠ½ΠΈ тСорСтичСски ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ…Π°ΠΊΠ΅Ρ€Π°ΠΌ возмоТности для проникновСния Π² вашС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ Ρ‚ΠΈΠΏΠ° Β«Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ посСрСдинС» сцСнарии ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ зарСгистрированы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° страницах, обслуТиваСмых ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ HTTPS. Π’ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· localhost, Π½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ прилоТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».

Π‘Ρ‚ΠΎΠΈΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ основных Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² (ΠΊΡ€ΠΎΠΌΠ΅ IE) ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ service workers для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

Как Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€

БСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ основаны Π½Π° JavaScript обСщаниях (promises), поэтому ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Π½ΠΈΡ… Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ваш Π²ΠΎΡ€ΠΊΠ΅Ρ€ смоТСт Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события install ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ слСдуСт ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» sw.js ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Как ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ события

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ установки, Π²ΠΎΡ€ΠΊΠ΅Ρ€ активируСтся. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ кусок ΠΊΠΎΠ΄Π°:

Π—Π΄Π΅ΡΡŒ опрСдСляСтся событиС fetch ΠΈ создаСтся ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅ caches.match. ΠŸΡ€ΠΈ запросС ΠΌΠ΅Ρ‚ΠΎΠ΄ пытаСтся Π½Π°ΠΉΡ‚ΠΈ любой Π·Π°ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠΌ рСсурс. Если Π½Π΅ получится, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сдСлан ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ запрос ΠΊ сСрвСру.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°ΠΌΠΈ. Для Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСриодичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. Π£Π·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ здСсь.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

Бпособ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Service workers зависит ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π²Π΅Π±-прилоТСния. Π’ΠΎΡ‚ нСсколько совСтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ:

ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

Если Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π°ΡˆΠΈΡ… страниц содСрТат ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡˆΠ°ΠΏΠΊΡƒ ΠΈ ΠΏΠΎΠ΄Π²Π°Π», Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ запросы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°, состоящСго ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… подрСсурсов. ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° запросы Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ HTML.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° HTML-ΠΊΠΎΠ΄ зависит ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· CMS, связь с ΡΠ΅Ρ‚ΡŒΡŽ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ страницы Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° сразу, ΠΏΠΎΠΊΠ° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄ Π΅Ρ‰Π΅ Π½Π΅ загрузился.

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ статичСского HTML-ΠΊΠΎΠ΄Π°

Если Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· статичСских HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ вовсС ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· связи с ΡΠ΅Ρ‚ΡŒΡŽ.
Π’Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ service worker, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ HTML. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° нСкоторая Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° для поддСрТания HTML Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии ΠΏΡ€ΠΈ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° stale-while-revalidate:

Как Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Workbox для создания Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°, способного ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваши статичСскиС рСсурсы, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии.

ΠžΠ΄Π½ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ прилоТСния

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ App Shell позволяСт одностраничным прилоТСниям с ΠΎΠ΄Π½ΠΎΠΉ страницСй Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ сСти ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… запросов. ПослС установки ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ этот ΠΊΠΎΠ΄ для ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ обновлСния app-shell.html:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ запросы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ копию HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, содСрТащСго основныС элСмСнты прилоТСния. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° для отобраТСния содСрТимого Π½Π° основС URL-адрСса.

Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, точная количСствСнная ΠΎΡ†Π΅Π½ΠΊΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ Google ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» тСматичСскоС исслСдованиС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ создатСли Π²Π΅Π±-прилоТСния Google I/O измСряли влияниС сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Google Analytics.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π°Ρ‡Π°Π»ΠΈ с пСрСчислСния вопросов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ собранныС Π΄Π°Π½Π½Ρ‹Π΅. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ эффСктивным, Ρ‡Π΅ΠΌ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ΅ HTTP-ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ посСщСнии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ страницы Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ быстрСС, поэтому Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния.

Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. «ВрСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы» Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ со страницСй ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π“ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠ°ΠΊ пСрвая значимая отрисовка ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ взаимодСйствиС, ΠΎΠ½ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ восприятиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ПослС опрСдСлСния ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вопросов ΠΈ Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

РСзюмС

БСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСти. НапримСр, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ push-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… прилоТСния. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ сСрвис-Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ смогут Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π³Π΅ΠΎΠ·ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠΎΡ€Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π²ΠΎΡ€ΠΊΠ΅Ρ€Π°ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² блиТайшСС врСмя ΠΎΠ½ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ исчСзнут.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

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