PWA — web texnologiyalar asosida yaratilgan, ammo install, offline ishlash, background capability va native applicationga yaqin tajriba bera oladigan web application yondashuvi. To‘liq nomi Progressive Web App.
PWA alohida bitta framework emas. U HTTPS, Web App Manifest, Service Worker va responsive web imkoniyatlarining kombinatsiyasidir.
Progressive tamoyil
“Progressive” tushunchasi application turli browser va qurilmada mavjud capability darajasiga qarab ishlashini anglatadi.
Asosiy content oddiy web sifatida ochiladi.
Qo‘llab-quvvatlovchi platformalarda qo‘shimcha imkoniyatlar:
- install;
- offline;
- push;
- background sync;
- file handlingga oid integratsiya
paydo bo‘lishi mumkin.
Web App Manifest
Manifest JSON formatidagi metadata fayli.
U quyidagilarni belgilashi mumkin:
- application nomi;
- qisqa nom;
- icon;
- start URL;
- display mode;
- theme color;
- background color;
- orientation;
- scope.
Browser install qilingan applicationni qanday ko‘rsatishni shu ma’lumotdan oladi.
Service Worker
Service Worker web page’dan alohida background contextda ishlaydigan script.
U:
- requestlarni intercept qilish;
- cache;
- offline response;
- push event;
- background syncga oid imkoniyat;
- update lifecycle
bilan ishlaydi.
U DOMga bevosita kira olmaydi.
HTTPS
Service Worker kuchli network controlga ega bo‘lgani sabab secure context talab qiladi.
Production PWA HTTPS orqali tarqatiladi.
Local development uchun ayrim browser localhostga maxsus ishonch beradi.
TLS certificate va origin xavfsizligi muhim.
Install
Browser application install kriteriyalariga mosligini baholashi mumkin.
User PWA’ni home screen, start menu yoki application listga qo‘shadi.
Install qilingan PWA alohida window’da ochilishi va browser chrome’ini kamaytirishi mumkin.
Platformalar kriteriy va UI bo‘yicha farq qiladi.
Display mode
Manifest display mode application oynasining ko‘rinishini belgilaydi.
Variantlar:
Fallback zanjiri platforma capability’siga bog‘liq.
Offline
Service Worker cache’dan HTML, CSS, JavaScript va data qaytarishi mumkin.
Offline strategiyalar:
Har resource uchun bir xil strategiya ishlatilmaydi.
App shell
App shell — navigation, layout va asosiy UI uchun minimal static resurslar.
U cache qilinib tez ochiladi.
Dynamic content keyin network yoki local storage’dan olinadi.
Shell eski bo‘lib qolmasligi uchun version va update lifecycle kerak.
Cache version
Yangi release’da cache nomi yoki manifest yangilanadi.
Service Worker install bosqichida yangi assetlarni oladi.
Activate bosqichida eski cache’lar tozalanishi mumkin.
Barcha tablar eski worker’dan yangisiga darhol o‘tmasligi mumkin.
Update lifecycle
Service Worker odatda backgroundda yangi versiyani tekshiradi.
Yangi worker waiting holatida qolishi mumkin, chunki eski sahifalar oldingi worker bilan boshqarilmoqda.
Application userga update mavjudligini ko‘rsatishi yoki xavfsiz reload jarayonini boshqarishi mumkin.
Push notification
Push service serverdan browser yoki OSga notification signalini yetkazadi.
User permissioni talab qilinadi.
Notification:
- muhim;
- kam;
- user kutgan;
- opt-in
bo‘lishi kerak.
Ortiqcha push userning permissionni o‘chirishiga olib keladi.
Background sync
Network yo‘q paytda bajarilmagan operation keyinroq qayta yuborilishi mumkin.
Masalan, form yoki message queue.
Operation idempotent bo‘lishi va ayni request ikki marta yuborilishiga tayyor turishi kerak.
Platforma background executionni energiya va policy sabab cheklashi mumkin.
Local data
PWA offline data uchun IndexedDB yoki boshqa browser storage’dan foydalanishi mumkin.
Sensitive data:
- encryption;
- device sharing;
- logout cleanup;
- quota;
- expiration
bilan boshqariladi.
Browser storage doimiy server database o‘rnini to‘liq bosmaydi.
Responsive design
PWA telefon, planshet va desktop ekranlariga moslashadi.
Touch target, keyboard, safe area va orientation hisobga olinadi.
Install imkoniyati responsive va accessible interface bo‘lmasa sifatli tajriba bermaydi.
PWA va native application
PWA web orqali yangilanadi va ko‘p platformada bitta codebase ishlatishi mumkin.
Native application ayrim device API, background capability va store integratsiyasida kengroq accessga ega.
Platforma capability farqlari project talabiga qarab baholanadi.
PWA va SPA
PWA SPA bo‘lishi mumkin, lekin shart emas.
MPA ham manifest va service worker bilan PWA xususiyatlarini olishi mumkin.
PWA delivery va platform capabilityga, SPA esa navigatsiya architecture’iga tegishli.
Installability
PWA install bo‘lishi faqat manifest mavjudligiga bog‘liq emas. Browser secure origin, valid icon, start URL, service worker va user engagementga oid o‘z kriteriyalarini qo‘llashi mumkin. Platformalar install bannerini boshqa usulda ko‘rsatadi, shu sababli web application install bo‘lmasa ham normal browser rejimida ishlashda davom etadi.
Storage quota
Cache, IndexedDB va boshqa storage qurilma quota’siga bo‘ysunadi. Browser pressure holatida ayrim data’ni o‘chirishi mumkin. Muhim server data faqat local storage’da yagona nusxa sifatida saqlanmaydi.
Offline mutation
Offline yozuvlar queue’da turganda serverdagi ayni obyekt boshqa qurilmadan o‘zgargan bo‘lishi mumkin. Sync vaqtida version va conflict policy ishlatiladi.
Standalone session
Install qilingan PWA browser tabidan alohida oynada ishlashi mumkin. Login cookie va origin bir xil bo‘lsa session umumiy bo‘lishi ehtimoli bor. Platforma navigatsiya va tashqi linklarni boshqa window’da ochishi mumkin.
Bog‘liq tushunchalar
Progressive Web App, Service Worker, Web App Manifest, Offline, Cache API, Push notification, Background Sync, Responsive design, SPA, IndexedDB