Ykjam programmalarda awtonom re modeim nähili işleýär
1) Awtonom re modeim näme we näme üçin zerur?
Awtonom re modeim, programmanyň torsyz (ýa-da durnuksyz internet bilen) işlemek, soň bolsa aragatnaşyk peýda bolanda sinhronlamak ukybydyr. Ol:- şowsuzlyklary azaldýar we saklamagy ýokarlandyrýar;
- birinji ekrany çaltlaşdyrýar (maglumatlar eýýäm ýerli);
- möhüm hereketleri (taslamalar, mazmuny görmek, amallaryň bir bölegi) "meýdançada" ýerine ýetirmäge mümkinçilik berýär.
2) Oflayn arhitektura gatlaklary (islendik stekde)
1. Lokal maglumat saklaýyş
Jübi ýerleri: SQLite/Room (Android), Core Data/SQLite (iOS), Realm, Key-Value (SharedPreferences/UserDefaults).
Web/PWA: IndexedDB (ýokarsynda - Dexie/LocalForage), Statika üçin Cache Storage.
2. Statika keşi (App Shell)
Nyşanlar, şriftler, CSS/JS, esasy ekran şablonlary.
3. Amallaryň nobaty (Outbox)
"Ýazmak" (döretmek/üýtgetmek/aýyrmak) haýyşlary hatara düzülýär we tor peýda bolanda serwere gidýär.
4. Senkronizasiýa gatlagy
Merj syýasatlary, wersiýalar, de-duplikasiýa, retralar, bekoff.
5. Ulgam ýagdaýynyň signallary
Internet/offline/limbo arasynda UI geçiş üçin NetInfo/Reachability/API brauzer.
3) iOS/Android-de nähili görünýär
Nagt pul we DB: maglumatlaryň gurluşy esasy API jogaplaryny görkezýär (mazmuny kadalaşdyryň).
Oflayn taslamalar: şekiller we hereketler 'pending/sent/failed' baýdaklary bilen ýerli DB ýazylýar.
Sinhronizasiýa: fon meselesi wagtal-wagtal outbox okaýar we statusy bellik edip partiýalary (batch) iberýär.
Howpsuzlyk: syrlar/bellikler - Keychain (iOS )/Android Keystore-da. PII/tölegli maglumatlar (mysal üçin AES-256 GCM) ygtybarly konteýnerden açar bilen şifrlenýär.
OS çäklendirmeleri: fon meseleleri energiýany tygşytlamagyň düzgünlerine baglydyr; haýyşlaryň duýgurlygyny we öldürilenden soň gaýtadan başlamagy meýilleşdiriň.
4) PWA-da nähili işleýär (web)
Service Worker (SW) - tor bilen programmanyň arasyndaky proksi:- Precache (App Shell): interfeýs derrew elýeterlidir.
- Runtime cache: aşakdaky strategiýalar boýunça maglumatlar/media.
- Background Sync/Periodic Sync (bar bolan ýerlerde): nobaty ibermek, ulanyjynyň gatnaşmazdan keseki täzelemek.
- Maglumatlar üçin IndexedDB we Statika üçin Cache Storage.
- Çäklendirmeler: saklamak kwotalary, fon meselelerine berk gözegçilik (esasanam iOS Safari).
5) Kesmek strategiýalary (näme we haçan ulanmak)
Cache First - üýtgewsiz statika üçin (nyşanlar, şriftler, JS wersiýalary).
Stale-While-Revalidate (SWR) - sanawlar/kataloglar üçin: derrew kesişden, fon bilen täze maglumatlary çekiň.
Tor First - tor bar bolanda şahsy maglumatlar üçin; ekap - oflayn ýagdaýda kesişden.
Cache Only/Network Only - seýrek hususy ýagdaýlar (diagnostika, hususy çeşmeler).
Birleşdiriň: statika - CF/SWR; dinamika - SWR/NF; ýazgylar - nobat arkaly.
6) Üýtgeşmeleriň nobaty we idempotentlik
Outbox-model: Her hereket (POST/PUT/PATCH/DELETE) wagtlaýyn ID, beden, wersiýa we möhlet bilen nobatyň ýazgysynda seriýallaşdyrylýar.
Toruň/serweriň ýalňyşlyklary ýüze çykan halatynda eksponensial backoff bukjalary (batch) bilen iberiň.
Başlyklarda/endpointlerde idempotent açarlary - gaýtadan ibermek goşa döretmez.
DB amallary: nobata ýazylmak we lokal ýagdaýy täzelemek atomar bolmaly.
7) Gapma-garşylyklary çözmek (server vs client)
Çemeleşmeler:- Last Write Wins (LWW) - ýönekeý, ýöne düzedişleri ýitirmek howpy.
- Version/ETag - serwer köne wersiýalary ret edýär → müşderi merge/gaýtadan saklaýar.
- Operasiýa üýtgeşmeleri/CRDT - çylşyrymly zatlary bilelikde redaktirlemek üçin.
- Meýdanlar boýunça düzgünler - serwerde haýsy "hakykat" meýdanlary, haýsy - müşderide (mysal üçin, ýerli bellikler/baýdaklar).
- Nyşany "sinhronlaşdyrylmady", "täzelemek" düwmesini we gapma-garşylykda diffi görkeziň (wersiýany saýlamak üçin).
8) Metbugat we agyr çeşmeler bilen işlemek
Duplikasiýa we heş (content-addressable) - birmeňzeş ýüklemäň.
Pleysholders/miniatürler oflayn, doly wersiýasy - tordan soň.
Erbet torda/batareýada bökdençlik bilen ýüklemek nobaty.
Media kesmek üçin TTL syýasaty - gigabaýt tygşytlamaň.
9) Oflayn bolmak üçin UX-patternler "adam"
TOP düzgüni: hiç haçan "boşlugy" görkezmäň. App Shell + skeleton + mazmunyň iň soňky tassyklanan görnüşi.
Anyk statuslar: Online/Offline/Senkronizasiýa .../Hereket talap edilýär.
Undo/Retry: iň soňky oflayn hereketi ýatyrmak; awtomatiki we el bilen gaýtalanýar.
Ýerli taslamalar: "Iberilmegine garaşýan" görünýän sanawlar.
Sessiz ýalňyşlyklar: agressiw biynjalyk etmäň - göze ilmeýän görkezijiler + magazineurnal ýeterlik.
10) Oflayn howpsuzlyk we gizlinlik
Duýgur maglumatlary "diskde" şifrläň; Açarlar - KeyStore/KeyChain.
PII oflayn ýygnamagy/saklamagy azaltyň; täzeden serediň we awto-arassalaň.
Hiç haçan syrlary/doly PAN/CVV kesmek; töleg üpjün edijileriniň bellikleri - diňe PCI düzgünleri boýunça.
SW/müşderini XSS (CSP, SRI) -den goraň, ýogsam hüjümçi indiki onlaýn ýagdaýda awtonom maglumatlary ogurlap biler.
11) Platformalaryň çäklendirmeleri
iOS: brauzerdäki fon meseleleriniň berk çäkleri; Web Push/periodic sync - nuanslar bilen; Düwme - syrlar üçin ygtybarly.
Android: Fon hyzmatlary has çeýe (WorkManager), ýöne OEM optimizasiýalary wezipeleri "öldürip" biler - "möhüm" diýip belläň.
PWA: IndexedDB/Cache Storage kwotalary, ýer ýetmezçiligi ýüze çykan halatynda duýduryş bermezden ulgam bilen arassalamak.
12) Awtonom synag
Tor profilleri (Airplane, 2G/3G, packet loss, high RTT).
Sink wagtynda prosesi öldürmek/dikeltmek.
Chaos-synaglar: batçyň ýarysy 429/503/timeout düşýär.
Gapma-garşylyklar: iki enjamdan paralel düzedişler.
Ammar kwotalary: diski doldurmak, keshiň özüni alyp barşyny barlamak.
13) Metrikler we gözegçilik etmek
Time To First Offline View (TTFOV): "App Shell" -iň peýda bolmak tizligi.
Offline coverage: Torsyz elýeterli ekranlaryň/amallaryň paýy.
Outbox health: nobatyň uzynlygy, sinka çenli ortaça wagt, ýalňyşlyklaryň paýy.
Konfliktleriň koeffisiýenti we el merjenleriniň paýy.
Kwota/ammar ulanylyşy, OS arassalamagyň ýygylygy.
User impact: ulgamsyz başlanan sessiýalar → sinkden soň öwrülişik.
14) Çalt durmuşa geçirmek meýilnamasy (90 gün)
1. Oflayn skopy kesgitlemek: haýsy ekranlar kesişden okalýar, haýsy amallary yza süýşürip bolýar.
2. DB we shemany saýlaň: kadaly tablisalar, indeksler, wersiýalar.
3. Goşmak App Shell: PWA SW/statik keş/nyşanlar/şriftler.
4. Outbox ýygnamak: nobat, idempotent, backoff, batchi.
5. Nagt strategiýalar: Sanawlar üçin SWR, Şahsy maglumatlar üçin Network First.
6. UX statuslary + sink magazineurnaly, retry/undo.
7. Howpsuzlyk: diskdäki şifrlemek, CSP/SRI, PII-ni azaltmak.
8. Erbet toruň aşagyndaky synaglar, bulam-bujarlyk synaglary we metrikler.
15) Ýygy-ýygydan ýalňyşlyklar we olardan nädip gaça durmaly
"Oflayn" diňe statika üçin. → Taslamalar we outbox gerek, ýogsam gymmaty az.
Hiç hili biperwaýlyk ýok. → Retrada amallar. Idempotent açarlaryny giriň.
Gizlin gapma-garşylyklar. → Ulanyjy düzedişleri ýitirýär. Diff/grid görkeziň.
TTL we kesiş arassalamaz. → Programma çişýär, OS zor bilen arassalaýar.
Sink UI bloklaýar. → Sinhronizasiýa elmydama fonda, UI - duýgur.
Gizlinlikleri açyk saklamak. → KeyChain/KeyStore we şifrlemek.
16) FAQ
Hemme zat üçin "doly" awtonom edip bolarmy?
Köplenç ýok: tölegler, ygtyýarnamalary barlamak we janly maglumatlar torlary talap edýär. Gibrid ediň: Nagt okamak + gijikdirilen ýazgylar.
Has çalt näme: SWR ýa-da Network First?
SWR kesişden derrew jogap berýär we sanawlar üçin iň gowy UX-ni ýuwaşlyk bilen täzeleýär. Network First, täzelik (profil, balans) möhüm bolan ýerlerde zerurdyr.
Uly metbugaty nädip saklamaly?
Miniatýuralary we gysga möhletli TTL-leri, asyl nusgalary - LRU-ny arassalamak bilen islege görä.
Hemme zady şifrlemelimi?
PII/syrlary we duýgur ýazgylary şifrläň. Galanlary töwekgelçilik syýasaty we kwotalar boýunça.
Oflayn SEO/PWA-ny hasam erbetleşdirermi?
Ýok, SW we SSR dogry bolsa, tersine, tizligi we gaýtalanýan saparlary ýokarlandyrar.
Oflayn re modeim "bellik" däl-de, ulgam arhitekturasy: ýerli DB + statika keş + üýtgeşmeler nobaty + ygtybarly sink we oýlanyşykly UX statusy. Howpsuzlyk (şifrlemek, Keychain/Keystore), idempotentlik we metrikleri goşuň, erbet ulgamy synagdan geçiriň - programma internetsiz-de peýdaly bolar we peýda bolanda ulanyjynyň maglumatlaryny we ynamyny ýitirmezden serweri tutar.