Mobil ilovalarda oflayn rejim qanday ishlaydi
1) Oflayn rejim nima va nima uchun kerak
Oflayn rejim - bu dasturning tarmoqsiz (yoki beqaror Internetda) ishlash va aloqa paydo bo’lganda sinxronlash qobiliyatidir. U:- rad etishlarni kamaytiradi va ushlab qolishni oshiradi;
- birinchi ekranni tezlashtiradi (ma’lumotlar allaqachon mahalliy);
- «maydonda» tanqidiy harakatlarni (loyihalar, kontentni koʻrish, operatsiyalarning bir qismi) bajarish imkonini beradi.
2) Oflayn arxitektura qatlamlari (istalgan stekda)
1. Lokal maʼlumotlar ombori
Mobil nativlar: SQLite/Room (Android), Core Data/SQLite (iOS), Realm, Key-Value (SharedPreferences/UserDefaults).
Veb/PWA: IndexedDB (yuqorida - Dexie/LocalForage), Statika uchun Cache Storage.
2. Statik kesh (App Shell)
Piktogrammalar, shriftlar, CSS/JS, asosiy ekran namunalari.
3. Operatsiyalar navbati (Outbox)
«Yozish» so’rovlari (yaratish/o’zgartirish/o’chirish) navbatga qo’shiladi va tarmoq paydo bo’lganda serverga o’tadi.
4. Sinxronlash qatlami
Merj siyosati, versiyalar, deduplikatsiya, retray, backoff.
5. Tarmoq holati signallari
Brauzerning NetInfo/Reachability/API’si.
3) iOS/Android’da qanday ko’rinish
Kesh va DB: ma’lumotlarning tuzilishi asosiy API javoblarini aks ettiradi (mohiyatlarni normallashtiring).
Oflayn loyihalar: shakllar va harakatlar’pending/sent/failed’bayroqlari bilan lokal DBga yoziladi.
Sinxronlashtirish: Orqa fon vazifasi vaqti-vaqti bilan outbox oʻqiydi va holatini belgilab, partiyalarni (batch) yuboradi.
Xavfsizlik: sirlar/tokenlar - Keychain (iOS )/Android Keystore. PII/to’lov ma’lumotlari (masalan, GCM AES-256) himoyalangan konteyner kaliti bilan shifrlanadi.
OS cheklovlari: fondagi vazifalar energiya tejash rejimlariga bog’liq; so’rovlarning idempotentligini va o’ldirilgandan keyin jarayonni qayta boshlashni rejalashtiring.
4) Bu PWA (veb) da qanday ishlaydi
Service Worker (SW) - tarmoq va ilova orasidagi proksi:- Precache (App Shell): interfeys darhol mavjud.
- Runtime cache: quyidagi strategiyalar boʻyicha maʼlumotlar/media.
- Background Sync/Periodic Sync (mavjud): navbatni joʻnatish, keshni foydalanuvchi ishtirokisiz yangilash.
- Maʼlumotlar uchun IndexedDB va statika uchun Cache Storage.
- Cheklovlar: saqlash kvotalari, fon vazifalarini qattiq nazorat qilish (ayniqsa iOS Safari).
5) Keshlash strategiyasi (nima va qachon qo’llash kerak)
Cache First - oʻzgarmas statika uchun (ikonkalar, shriftlar, JS versiyalari).
Stale-While-Revalidate (SWR) - roʻyxatlar/kataloglar uchun: bir lahzada keshdan, yangi maʼlumotlarni orqa fon bilan tekshirish.
Network First - tarmoq mavjud bo’lganda shaxsiy ma’lumotlar uchun; bekap - oflayn holda keshdan.
Cache Only/Network Only - kamdan-kam uchraydigan xususiy holatlar (diagnostika, shaxsiy resurslar).
Qo’shing: statika - CF/SWR; dinamika - SWR/NF; yozuvlar - navbat orqali.
6) O’zgarishlar navbati va idempotentlik
Outbox modeli: har bir harakat (POST/PUT/PATCH/DELETE) vaqtinchalik ID, tanasi, versiyasi va muddati belgilangan navbat yozuvida seriyalanadi.
Tarmoq/serverda xato roʻy berganda eksponensial backoff paketlarini joʻnatish.
Sarlavha/endpointlardagi idempotent kalitlar - qayta jo’natish dubl yaratmaydi.
DB tranzaksiyalari: navbatga yozish va lokal holatni yangilash atom bo’lishi kerak.
7) Nizolarni hal qilish (server vs client)
Yondashuvlar:- Last Write Wins (LWW) - oddiy, ammo tuzatishlarni yo’qotish xavfi.
- Version/ETag - server eskirgan versiyalarni rad etadi → mijoz merge/qayta saqlaydi.
- Operatsion transformatsiyalar/CRDT - murakkab mavjudotlarni birgalikda tahrir qilish uchun.
- Dalalar bo’yicha qoidalar - serverda qanday «haqiqat», mijozda qanday (masalan, lokal belgilar/bayroqlar).
- «Sinxronlanmagan» nishonchasini, «yangilash» tugmasini va mojaroda diffni koʻrsating (versiyani tanlash uchun).
8) Media va og’ir resurslar bilan ishlash
Deduplikatsiya va xeshlar (content-addressable) - bir xil yuklamang.
Pleysholderlar/miniatyuralar oflayn, to’liq versiyasi - tarmoqdan keyin.
Noto’g’ri tarmoq/akkumulyatorda to’xtatib qo’yish navbati.
Media kesh uchun TTL siyosati - gigabayt tejamang.
9) Oflayn «inson» bo’lishi uchun UX-patternlar
TOP qoidasi: hech qachon «boʻshliq» koʻrsatmang. App Shell + skeleton + kontentning oxirgi tasdiqlangan versiyasi.
Aniq holatlar: Online/Offline/Sinxronizatsiya .../Amal talab qilinadi.
Undo/Retry: oxirgi oflayn harakatni bekor qilish; avtomatik va qoʻlda takrorlash.
Lokal loyihalar: «Joʻnatishni kutmoqda» koʻrinadigan roʻyxatlar.
Jim xatolar: tajovuzkorlik bilan bezovta qilmang - ko’zga ko’rinmaydigan ko’rsatkichlar + jurnal etarli.
10) Oflayn xavfsizlik va maxfiylik
Sezgir maʼlumotlarni «diskda» shifrlang; kalitlar - Keystore/Keychain.
PII’ni oflayn holda yig’ish/saqlashni minimallashtirish; retenshn va avto tozalashni o’rnating.
Hech qachon sirlarni/toʻliq PAN/CVVlarni keshlamang; to’lov provayderlarining tokenlari - faqat PCI qoidalari bo’yicha.
SW/mijozni XSS (CSP, SRI) dan himoya qiling, aks holda hujumchi keyingi onlayn rejimida oflayn ma’lumotlarni o’g’irlashi mumkin.
11) Platformalarni cheklash
iOS: brauzerdagi fon vazifalarining qat’iy limitlari; Web Push/periodic sync - nuanslar bilan; Keychain - sir uchun ishonchli.
Android: orqa fon xizmatlari moslashuvchan (WorkManager), lekin OEM optimallashtirish vazifalarni «o’ldirishi» mumkin - «muhim» deb belgilang.
PWA: IndexedDB/Cache Storage kvotalari, joy yetishmaganda ogohlantirishsiz tozalash.
12) Oflayn test
Tarmoq profillari (Airplane, 2G/3G, packet loss, high RTT).
Sink paytida kill/restore.
Chaos-testlar: batchning yarmi 429/503/timeout ga tushadi.
Mojarolar: ikkita qurilmadan parallel tahrirlash.
Saqlash kvotalari: diskni toʻldirish, kesh xatti-harakatlarini tekshirish.
13) Metrika va kuzatish
Time To First Offline View (TTFOV): App Shell paydo bo’lish tezligi.
Offline coverage: tarmoqsiz mavjud ekranlar/operatsiyalar ulushi.
Outbox health: navbat uzunligi, ko’k uchun o’rtacha vaqt, xatolar ulushi.
Mojarolar koeffitsiyenti va qo’l merjalari ulushi.
Kvota/ombordan foydalanish, OSni tozalash chastotasi.
User impact: tarmoqsiz boshlangan sessiyalar → sinkdan keyingi konvertatsiya.
14) Tez joriy etish rejasi (90 kun)
1. Oflayn skopni belgilash: qaysi ekranlar keshdan oʻqiladi, qaysi operatsiyalarni kechiktirish mumkin.
2. MB va sxemani tanlash: normallashtirilgan jadvallar, indekslar, versiyalar.
3. App Shell: PWA SW/statik kesh/piktogramma/shriftlarni yoqish.
4. Outbox: navbat, idempotent, backoff, batchi.
5. Kesh strategiyalari: roʻyxatlar uchun SWR, shaxsiy maʼlumotlar uchun Network First.
6. UX maqomi + sinka jurnali, retry/undo.
7. Xavfsizlik: diskda shifrlash, CSP/SRI, PII minimallashtirish.
8. Yomon tarmoq ostidagi testlar, xaos-testlar va metriklar.
15) Tez - tez xatolar va ulardan qanday qochish mumkin
«Oflayn» faqat statika uchun. → Loyiha va outbox kerak, aks holda qiymati kichik.
Idempotentlik yo’q. → Retraj operatsiyalari dubli. Idempotent kalitlarni kiriting.
Yashirin mojarolar. → Foydalanuvchi tuzatishlarni yoʻqotadi. Diff/panjarani koʻrsating.
TTL va keshni tozalashsiz. → Ilova shishib ketadi, OS majburan tozalanadi.
Sink UIni bloklaydi. → Sinxronizatsiya har doim fonda, UI - sezgir.
Sirlarni ochiq saqlash. → Keychain/Keystore va shifrlashdan foydalaning.
16) FAQ
Hamma narsa uchun «to’liq» oflayn qilish mumkinmi?
Ko’pincha yo’q: to’lovlar, litsenziyalarni tekshirish va jonli ma’lumotlar tarmoqni talab qiladi. Gibrid qiling: keshdan oʻqish + kechiktirilgan yozuvlar.
Nima tezroq: SWR yoki Network First?
SWR keshdan tezkor javob beradi va roʻyxatlar uchun eng yaxshi UX - jimgina yangilanadi. Network First yangilik (profil, balans) muhim bo’lgan joyda kerak.
Katta ommaviy axborot vositalarini qanday saqlash kerak?
Miniatyuralar va qisqa muddatli TTLlarni, asl nusxalarni - LRUni tozalash bilan, so’rov bo’yicha keshlang.
Hamma narsani shifrlash kerakmi?
PII/sirlar va sezgir yozuvlarni shifrlang. Qolganlari - xavf siyosati va kvotalar bo’yicha.
Oflayn rejim SEO/PWAni yomonlashtiradimi?
Yo’q, SW va SSR to’g’ri bo’lsa, aksincha, tezlikni va takroriy tashriflarni yaxshilaydi.
Oflayn rejim - bu «belgi» emas, balki tizim arxitekturasi: mahalliy DB + statik kesh + o’zgarishlar navbati + ishonchli sink va puxta o’ylangan UX maqomi. Xavfsizlik (shifrlash, Keychain/Keystore), idempotentlik va metrikani qo’shing, yomon tarmoqni sinab ko’ring - ilovangiz Internetsiz ham foydali bo’lib qoladi va u paydo bo’lganda foydalanuvchi ma’lumotlari va ishonchini yo’qotmasdan serverni uzluksiz bosib o’tadi.