Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ service workers Π΄Π»Ρ ΡΠ°ΠΉΠ½ΠΈΠΊΠΎΠ²
ΠΡΠΎ ΡΡ ΡΠ°ΠΊΠΎΠΉ, Service Worker?
Service Worker: Π― ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΏΡΠΎΠΊΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ.
Service Worker Π·Π²ΡΡΠΈΡ ΠΊΡΡΡΠΎ, Π½ΠΎ Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΡΡΠΎ ΡΡΠΎ
Π ΠΈΡΠ»Π΅ 2015 Ρ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°Π»Π° Π² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΏΠΎ JavaScript, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠ²ΡΠ΅ΠΉ Π² Π³ΠΎΡΠΎΠ΄Π΅ ΠΡΡΠΈΠ½, ΡΡΠ°Ρ Π’Π΅Ρ Π°Ρ. ΠΠ° ΡΡΠ΅Π½Π΅ β ΠΠΆΠ΅ΠΉΠΊ ΠΡΡΠΈΠ±Π°Π»ΡΠ΄, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ³Π΄Π° Ρ Π·Π½Π°Π»Π° ΠΊΠ°ΠΊ Π·Π°Π±Π°Π²Π½ΠΎΠ³ΠΎ Π±ΡΠΈΡΠ°Π½ΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΡΠ½Ρ, Π»ΡΠ±ΠΈΡΠ΅Π»Ρ ΠΏΠΎΡΡΡΠΈΡΡ Π½Π° βΡΡΠ°Π»Π΅ΡΠ½ΡΡ ΡΠ΅ΠΌΡβ 🚽. Π£ΠΆΠ΅ ΠΏΠΎΡΠΎΠΌ Ρ ΠΏΠΎΠ½ΡΠ»Π°, ΡΡΠΎ ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅Π±Π΅ βΠ²Π°ΠΆΠ½ΡΠΉ ΡΡΠ²Π°ΠΊβ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Service WorkerβΠΎΠ².
Π Π²ΠΎΡ ΠΏΠΎ Ρ ΠΎΠ΄Ρ ΠΈΡΡΠΎΡΠΈΠΈ ΠΎΠ± UX-ΠΎΡΠΊΡΠΎΠ²Π΅Π½ΠΈΠΈ, Π½Π°ΡΡΠΈΠ³Π½ΡΠ²ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΡΠ°Π»Π΅ΡΠ΅, ΠΠΆΠ΅ΠΉΠΊ ΡΠ°ΡΡΠΊΠ°Π·Π°Π» Π·Π°Π»Ρ ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΊΠ΅, Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ Service Worker. Π¨ΡΡΠΊΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ Π²Π°ΡΠ΅ΠΌΡ Π²Π΅Π±-ΡΠ°ΠΉΡΡ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ Π½Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³Π΄Π° Ρ ΠΏΠΎΠ½ΡΠ»Π° Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ).
Π’ΠΎ, ΠΎ ΡΠ΅ΠΌ ΠΎΠ½ Π³ΠΎΠ²ΠΎΡΠΈΠ», Π·Π²ΡΡΠ°Π»ΠΎ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΈ ΠΌΠ½Π΅ Π·Π°Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. Π‘Π½Π°ΡΠ°Π»Π° Π±ΡΠ»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ ΡΡΠΎβ¦ ΠΡΠΎ Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Π½Π΅ Π½ΠΎΠ²ΡΠΉ HTML ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ Π½ΠΎΠ²ΡΠΉ JavaScript ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π° ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ ΠΊΠ°ΠΊ βΠΊΡΡβ ΠΈΠ»ΠΈ βΠΏΡΠΎΠΊΡΠΈβ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΌΠ΅Π½Ρ Π² Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ. ΠΡΡΠ°ΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ ΡΠ°Π±ΠΎΡΡ Service WorkerβΠ°, Ρ Π΄Π΅Π»Π°Π»Π° ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ Π½Π° Π±ΡΠΌΠ°Π³Π΅, ΠΈ ΠΌΠ½Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Ρ ΠΏΡΠΈΡΠ»Π° ΠΈΠ΄Π΅Ρ ΡΡΠ°Π²Π½ΠΈΡΡ Π΅Π³ΠΎ Ρ βΠΏΡΠΈΡΠ΅Π»ΡΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅ΡΠ΅ ΠΏΠΎΠΆΠΈΡΡ Π² Π²Π°ΡΠ΅ΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅β. ΠΠ²ΡΡΠΈΡ ΡΡΡΠ°Π½Π½ΠΎ? Π’ΠΎΠ³Π΄Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ.
S ervice Worker β ΠΏΡΠΈΡΠ΅Π»Π΅Ρ Π²ΠΎ Π²ΡΠ΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅: Π²Π°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ β ΡΡΠΎ ΠΏΠ»Π°Π½Π΅ΡΠ° (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΠ΅ΠΌΠ»ΠΈ), ΡΠ°ΡΡΠΈΡΠ° Π±ΠΎΠ»ΡΡΠΎΠΉ Π³Π°Π»Π°ΠΊΡΠΈΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΡΠ΄ΠΈ Π½Π° ΡΡΠΎΠΉ ΠΏΠ»Π°Π½Π΅ΡΠ΅ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°ΡΡ Π½Π° ΡΠ²ΠΎΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ HTML, CSS ΠΈ JavaScript, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΡΠΎΡΠΌΠΈΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° β Π²Π΅Π± ΡΡΡΠ°Π½ΠΈΡΡ.
Π Π΅ΡΠ»ΠΈ Π²Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΡΡ ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°: Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ ΠΈΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ DOM Π΄Π΅ΡΠ΅Π²Π° ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅.
ΠΠ° ΡΡΠΎΠΉ ΠΏΠ»Π°Π½Π΅ΡΠ΅ (Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅) Π±ΡΠ» ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΌΠΈΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ Π³Π°Π»Π°ΠΊΡΠΈΠΊ (ΡΠ΅ΡΠ²Π΅ΡΠΎΠ²). ΠΠ³ΠΎ Π½Π°Π·Π²Π°Π»ΠΈ Hyper Text Transfer Protocol. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ Π²Π°ΡΠ° ΠΏΠ»Π°Π½Π΅ΡΠ°-Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»Π°ΡΡ Π² ΠΊΠΎΠΏΠΈΠ»ΠΊΡ ΠΌΠΈΠ»ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Ρ ΠΊΠΎΡΡΡΠ°ΠΌΠΈ ΠΈ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΡΠ²ΠΈΡΠΎΠ². Π ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ ΠΎΠ½Π° ΡΠΌΠΎΠ³Π»Π° ΠΏΡΠΈΠ²Π»Π΅ΡΡ ΠΊ ΡΠ΅Π±Π΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
HTTP ΠΏΠΎΡ ΠΎΠΆ Π½Π° Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΡΡ Π²ΠΎΠ»ΡΠ΅Π±Π½ΡΡ Π²Π΅ΡΠΈΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π»Π°, Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»Π΅Π½ΡΠ°ΡΡΠΉ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄. ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ-Π³Π°Π»Π°ΠΊΡΠΈΠΊΠ°ΠΌΠΈ. ΠΠ»ΠΈΠ½Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΏΠ»Π°ΡΠΈΡΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ (ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ), ΠΈ ΠΎΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅. ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΡΡΡΠ±Π° ΡΠ·ΠΊΠ°Ρ ΠΈΠ»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄Π»ΠΈΠ½Π½Π°Ρ, ΡΠΎ ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ Π³Π°Π»Π°ΠΊΡΠΈΠΊ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π½Π° Π²Π°ΡΡ ΠΏΠ»Π°Π½Π΅ΡΡ Π΄ΠΎΠ»ΡΡΠ΅.
ΠΠΎ Π΄Π΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΠΎΡΠΎΠΉ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈ Π²ΠΎΠ²ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. Π ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄Ρ Π²Π°ΡΠ° ΠΏΠ»Π°Π½Π΅ΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² Π΄ΠΎΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠΏΠΎΡ Ρ, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΠ΅ΠΉ Π²Π°ΠΌ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ, Π° Π²Π°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π΄ΠΈΠ½ΠΎΠ·Π°Π²ΡΠΎΠ², ΠΊΠ°ΠΊ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ βΡΡΠ°ΡΡΡ Π΄ΠΎΠ±ΡΡΡ β.
ΠΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅! Service Worker ΡΠΆΠ΅ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ!
Π’ΡΠΈ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π½Π°ΡΡ ΠΎ Π²Π°ΡΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠΈΡΡΠ΅Π»Π΅.
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π»Ρ Π²Π°Ρ Service Worker?
1. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΡΡΠ΅ΠΌ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ Service Worker ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ fetch events ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ Π² ΠΊΡΡΠ΅. ΠΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈ ΡΠ΅ΡΡΡΡΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ, ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ Π²Π°ΡΠ΅ΠΌΡ ΡΠ°ΠΉΡΡ, Π° Π΄Π΅Π»Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ HTTP-Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΡΠΆΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΊΡΡΠΈΡΠΎΠ²Π°Π½Ρ, Π±ΡΠ°ΡΠ·Π΅Ρ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
2. Push-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΌΠ°Π³ΠΈΠΈ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Service Worker ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ΅Π³Π΄Π° Π±ΡΡΡ Π² ΠΊΡΡΡΠ΅, ΠΏΠΎΠ»ΡΡΠ°Ρ push-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ.
3. Π€ΠΎΠ½ΠΎΠ²Π°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ
ΠΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π΅ΡΠ΅ ΠΈ ΡΠΎ, ΡΡΠΎ Service Worker Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½Π΅ ΠΎΡΠ²Π»Π΅ΠΊΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ, Π±ΡΠ΄ΡΡΠΈ offline, Π½ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΉΠ». Π’Π°ΠΊ Π²ΠΎΡ, Service Worker ΡΠ°ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΡΠ°ΠΉΠ» Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ½ΠΎΠ²Π°.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 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. ΠΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ SW, Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π», SW ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠΎ Ρ Π½Π΅ ΡΠΏΠΎΠΌΡΠ½ΡΠ» ΠΎΠ΄Π½Ρ Π²Π΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠΎΠ±ΡΡΠΈΠΉ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΊ SW, ΠΌΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° self, ΡΡΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ½Π΅ Π΄ΠΎΡΡΡΠΏ ΠΊ SWΒ», Π° Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ addEventListener (). SW Π½Π°Π΄Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊ ΡΠΎΠ±ΡΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ°ΡΠ·Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Service Workerβa. ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ, ΠΈ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠ±ΡΡΠΈΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Π½Π°Ρ Service Worker ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Π² ΠΊΠ΅Ρ-ΠΏΠ°ΠΌΡΡΡ.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ event.respondWith () ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΡΠΌΠ°ΡΡ ΠΎ Service WorkerβΠ΅ ΠΊΠ°ΠΊ ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΏΡΠΎΠΊΡΠΈ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ fetch. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· Service Worker, ΠΊΠ°ΠΊ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ²Π΅Ρ. Π’ΠΎ Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ, ΠΎΡΠ²Π΅Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ cashes.match () ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ Π»ΠΈ ΡΠΆΠ΅ Π΄Π°Π½Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΠΎΠ½ Π²Π΅ΡΠ½Π΅Ρ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ. ΠΡ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡ ΠΈ Π½Π΅ Π²ΡΠ΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π·Π°ΠΏΡΠΎΡΠΈΡΡ, ΠΈ Π²ΠΈΠ΄ΠΈΠΌ, Π΅ΡΡΡ Π»ΠΈ ΠΎΠ½ΠΎ Π² ΠΊΠ΅ΡΠ΅ ΠΈ Π΅ΡΠ»ΠΈ Π΅ΡΡΡ, ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π² ΠΊΠ΅ΡΠ΅, ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²Π΅ΡΠ½ΡΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΠ±ΠΎΡΠΊΡ ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΈΠ»ΠΈ Π³Π΄Π΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π΅ΡΡΠ°Π΅ΠΌ fetch (event.request). ΠΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΡ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π½Π°ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΈ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«ΠΠΠΠ£Π§ΠΠ’Π¬ ΠΠΠΠΠ«ΠΒ» Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ Ρ Ρ ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½Π°ΠΆΠ°Π² ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΠ»ΠΈ ΠΈΡ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΠ΅ΡΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠ°ΠΊ, ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΠΎΠΌ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΠΎΡΠ΅ΡΠΈΠ»ΠΈ Π½Π°Ρ ΡΠ°ΠΉΡ. ΠΡΠ°ΠΊ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π·ΡΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΈΡ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ΅.
ΠΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅, Ρ Π΄ΠΎΠ±Π°Π²Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΡΡΠ½Ρ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π‘Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅Π³ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ°ΡΠ΅ΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ event.waitUntil (), ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠ½Π΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΎΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π² indexedDB (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· utility.js), ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ ΠΈΡ , ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ post Π·Π°ΠΏΡΠΎΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΈΡ ΠΈΠ· indexedDB, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. ΠΠΎΡ ΠΈ Π²ΡΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π² Π½Π°ΡΠ΅ΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«POST DATAΒ» ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° Π²ΡΠΉΡΠΈ Π² ΠΎΠ½Π»Π°ΠΉΠ½.
ΠΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«POST DATAΒ», ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π΅ Π² ΡΠ΅ΡΠΈ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°.
Π ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ»ΠΈ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, Π½Π°ΠΌ ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π°Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠ΅ΡΠ° ΠΈ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠΠΠ£Π§ΠΠ’Π¬ ΠΠΠΠΠ«ΠΒ».
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
Π‘Π΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΡΠ°Π·ΡΡΠ²Π΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ
Service worker β ΡΡΠΎ ΠΎΡΠΎΠ±ΡΠΉ ΡΠΈΠΏ JavaScript Π²ΠΎΡΠΊΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ½ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΡΡ. ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ.
ΠΡΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΠΎΠ»ΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ°, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π·Π°Π²ΠΈΡΠ½Π΅Ρ.
ΠΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ ΡΠ»ΡΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
Π£ Π²ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠ΅ Π±ΡΠ»ΠΎ: Π²Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΠ΅ Π½Π° ΡΡΡΠ»ΠΊΡ ΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΠ΅ΡΡ Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²Π°ΡΠΈΠ°ΡΠΈΠ΅ΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Β«ΠΠ΅ ΡΠ΄Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡΒ». ΠΡ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π½Π°Π·Π°Π΄ ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΠΎΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ³ΡΠ°ΡΡ Π² dino runner, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Chrome. Π‘Π΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ.
ΠΠ΄Π½ΠΎ ΠΈΠ· ΡΠ°ΠΌΡΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² β ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΠΎΡΡΠ»Π°ΠΉΠ½-ΡΠ΅ΠΆΠΈΠΌΠ΅. Π ΠΏΡΠΎΡΠ»ΠΎΠΌ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API AppCache, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ, ΠΈ ΠΎΠ½ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΡΡΠ° Π²ΡΠ΅Π³Π΄Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΠΊΡΡΠΈΡΡΠ΅ΡΠ΅ Π²ΡΠ΅ ΡΠ΅ΡΡΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΠ²ΡΠΈΡ ΡΡ Π½Π° ΡΠ°ΠΉΡ. ΠΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ?
Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π£ Π½ΠΈΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ»:
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΊΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ ΠΈΠ· JavaScript, Π±ΡΠ°ΡΠ·Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π΅Π³ΠΎ. ΠΡΠ»ΠΈ ΠΎΠ½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½, ΡΠΎ Π½Π°ΡΠ½Π΅Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π² ΠΈΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ.
ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π²ΡΠ΅ΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π§ΡΠΎΠ±Ρ Π²ΠΎΡΠΊΠ΅Ρ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π», ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ²ΡΠ°Ρ Π΅Π³ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ: ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ fetch ΠΈ message ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ
Π‘Π΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ β Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Ρ Π°ΠΊΠ΅ΡΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π² Π²Π°ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ Π°ΡΠ°ΠΊ ΡΠΈΠΏΠ° Β«ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅Β» ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°Ρ , ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ HTTPS. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΡΠΊΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· localhost, Π½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ».
Π‘ΡΠΎΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² (ΠΊΡΠΎΠΌΠ΅ IE) ΡΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ.
ΠΠ°ΠΊ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅Ρ
Π‘Π΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° 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-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π±ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΡ ΡΠΌΠΎΠ³ΡΡ Π΄Π΅Π»Π°ΡΡ Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π²Π΅ΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π³Π΅ΠΎΠ·ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠΎΡΠ° Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π²ΠΎΡΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΠΈΡΡΠ΅Π·Π½ΡΡ.