Мобилдик тиркемелерде оффлайн режими кандай иштейт
1) оффлайн режими эмне жана эмне үчүн керек
Оффлайн режими - бул тиркеменин тармактарсыз (же туруксуз интернетте) иштөө, андан кийин байланыш пайда болгондо синхрондоштуруу жөндөмдүүлүгү. Ал:- ийгиликсиздиктерди азайтат жана кармап турууну жогорулатат;
- биринчи экран тездетет (жергиликтүү маалыматтар);
- маанилүү иш-аракеттерди (долбоорлор, мазмунду көрүү, операциялардын бир бөлүгү) аткарууга мүмкүндүк берет.
2) Оффлайн архитектурасынын катмарлары (каалаган стекте)
1. Жергиликтүү маалыматтарды сактоо
Mobile Native: SQLite/Room (Android), Core Data/SQLite (IOS), Realm, Key-Value (SharedPreferences/UserDefaults).
Web/PWA: IndexedDB (жогоруда - Dexie/LocalForage), Cache Storage үчүн.
2. Статикалык кэш (App Shell)
иконалар, ариптер, CSS/JS, негизги экран үлгүлөрү.
3. Операциялар кезеги (Outbox)
"Жазууга" (түзүү/өзгөртүү/жок кылуу) суроолор кезекке коюлат жана тармак пайда болгондо серверге кетет.
4. Синхрондоштуруу катмары
Мердж саясаты, версиялар, дедупликация, ретра, бэкофф.
5. Тармак абалы сигналдары
NetInfo/Reachability/API браузер онлайн/offline/limbo ортосунда UI которуу үчүн.
3) Бул IOS/Android көрүнөт
Кэш жана DD: маалыматтардын структурасы негизги API жоопторду чагылдырат (маңызын нормалдаштырыңыз).
Оффлайн долбоорлор: формалар жана аракеттер 'pending/sent/failed' желектери менен жергиликтүү БДга жазылат.
Синхрондоштуруу: фон тапшырмасы мезгил-мезгили менен outbox окуйт жана статусту белгилөө менен партияларды (батч) жөнөтөт.
Коопсуздук: сырлар/токендер - боюнча Keychain (IOS )/Android Keystore. PII/төлөмдөр менен маалыматтар коопсуз контейнердин ачкычы менен шифрленет (мисалы, GCM AES-256).
ОС чектөөлөрү: фондук милдеттер энергияны үнөмдөө режимдерине көз каранды; суроо-талаптардын жана өлтүрүү жараяны кийин кайра жандандыруу.
4) Бул PWA иштейт (Web)
Service Worker (SW) - тармак менен тиркеменин ортосундагы прокси:- Precache (App Shell): Interface заматта жеткиликтүү.
- Runtime cache: төмөнкү стратегиялар боюнча маалымат/медиа.
- Background Sync/Periodic Sync (жеткиликтүү жерде): кезек жөнөтүү, колдонуучунун катышуусуз кэш жаңыртуу.
- IndexedDB берилиштер үчүн жана Cache Storage үчүн статика.
- Чектөөлөр: сактоо квоталары, арткы милдеттерди катуу көзөмөлдөө (өзгөчө iOS Safari).
5) Кэш стратегиялары (эмне жана качан колдонуу керек)
Cache First - өзгөрүлбөс статика үчүн (сөлөкөттөр, ариптер, JS чыгаруу).
Stale-While-Revalidate (SWR) - тизмелер/каталогдор үчүн: дароо кэшден, жаңы маалыматтарды тартуу фонунда.
Network First - тармак бар жеке маалыматтар үчүн; backup - оффлайн режиминде кэштен.
Cache Only/Network Only - сейрек кездешүүчү жеке учурлар (диагностика, жеке ресурстар).
Айкалыштыруу: статика - CF/SWR; динамикасы - SWR/NF; жазуулар - кезек аркылуу.
6) Өзгөртүү кезеги жана демпотенттик
Outbox-модели: Ар бир иш-аракет (POST/PUT/PATCH/DELETE) убактылуу ID, дене, нускасы жана мөөнөтү менен кезек жазуу менен катар.
пакеттерди жөнөтүү (batch) менен экспоненциалдык backoff каталар тармак/сервер.
Аталыштарда/эндпоинттерде демпотенттик ачкычтар - кайра жөнөтүү дубль жаратпайт.
Транзакциялар DD: кезекке жазуу жана жергиликтүү абалды жаңылоо атомдук болушу керек.
7) Чыр-чатактарды чечүү (server vs client)
Ыкмалары:- Last Write Wins (LWW) - жөнөкөй, бирок өзгөртүү жоготуу коркунучу.
- Версиялоо/ETag - сервер эскирген версияларын четке кагат → кардар сооданы/кайра сактоону жасайт.
- Операциялык трансформациялар/CRDT - татаал нерселерди биргелешип редакциялоо үчүн.
- Талаа эрежелери - сервердеги кайсы талаалар "чындык", кайсы - кардар (мисалы, жергиликтүү белгилер/желектер).
- "Синхрондуу эмес" төш белгисин, "Жаңыртуу" баскычын жана чыр-чатак учурунда дифф көрсөтүңүз (версияны тандоо үчүн).
8) Медиа жана оор ресурстар менен иштөө
Дедупликация жана хэштер (content-addressable) - бирдей жүктөбөңүз.
Playsholders/оффлайн миниатюралар, толук версия - тармактан кийин.
начар тармак/батарея менен тыныгуу менен жүктөп алуу кезеги.
Медиа кэш үчүн TTL саясаты - гигабайтты үнөмдөөгө болбойт.
9) UX үлгүлөрү оффлайн болушу үчүн "адам"
ТОП-эреже: эч качан "боштукту" көрсөтпөө. App Shell + skeleton + мазмундун акыркы тастыкталган версия.
Так статустар: Online/Offline/Sync .../аракет талап кылынат.
Undo/Retry: акыркы оффлайн аракетин жокко чыгаруу; автоматтык жана кол менен кайталоо.
Жергиликтүү долбоорлор: "Жөнөтүүнү күтөт" көрүнгөн тизмелери.
Тынч каталар: агрессивдүү тоскоолдук жок - жетиштүү көзгө көрүнбөгөн көрсөткүчтөр + журнал.
10) оффлайн коопсуздук жана купуялуулук
Сезгич маалыматтарды "дискте" шифрлөө; Keystore/Keychain.
PII оффлайн жыйноону/сактоону минималдаштыруу; retenshn жана auto тазалоо.
Эч качан сырларды/толук PAN/CVV кэш; төлөм провайдерлеринин токендери - PCI эрежелери боюнча гана.
SW/кардарды XSSтен (CSP, SRI) коргогула, антпесе чабуулчу кийинки онлайн режиминде оффлайн маалыматтарды уурдай алат.
11) Платформаларды чектөө
iOS: браузерде арткы милдеттердин катуу чеги; Web Push/periodic sync - нюанстар менен; Keychain - сырлар үчүн коопсуз.
Android: ийкемдүү фон кызматтары (WorkManager), бирок OEM оптималдаштыруу милдеттерди "өлтүрүшү" мүмкүн - "маанилүү" деп белгилеңиз.
PWA: IndexedDB/Cache Storage квоталары, орун жоктугунда эскертүү жок система менен тазалоо.
12) Offline сыноо
Тармак профилдери (Airplane, 2G/3G, packet loss, high RTT).
Синк учурунда өлтүрүү/калыбына келтирүү процесси.
Chaos-тесттер: жарым батч 429/503/timeout түшөт.
Чыр-чатактар: эки түзмөктөн параллелдүү түзөтүүлөр.
Сактоо квоталары: дискти толтуруу, кэштин жүрүм-турумун текшерүү.
13) Метрика жана байкоо
Time To First Offline View (TTFOV): App Shell пайда ылдамдыгы.
Offline coverage: тармак жок жеткиликтүү экрандар/иш үлүшү.
Outbox ден соолук: кезек узундугу, Синк орточо убакыт, каталардын үлүшү.
Конфликттердин коэффициенти жана кол мерджерлердин үлүшү.
Квота/сактоо колдонуу, OS тазалоо жыштыгы.
User impact: тармактарсыз башталган сессиялар → синктен кийин конверсия.
14) Fast киргизүү планы (90 күн)
1. Оффлайн скобун аныктоо: кэштен кайсы экрандар окулат, кайсы операцияларды кийинкиге калтырса болот.
2. DD жана схеманы тандоо: нормалдаштырылган таблицалар, индекстер, версиялар.
3. App Shell күйгүзүү: PWA SW/Cache статика/иконалар/ариптер.
4. Outbox чогултуу: кезек, демпотенттик, бэкофф, батчи.
5. Кэш стратегиялары: SWR үчүн тизмелер, жеке маалыматтар үчүн Network First.
6. UX статусу + синка журналы, retry/undo.
7. Коопсуздук: диск шифрлөө, CSP/SRI, PII минималдаштыруу.
8. Начар тармак боюнча тесттер, башаламандык тесттер жана метриктер.
15) Көп каталар жана аларды алдын алуу үчүн кантип
"Оффлайн" статика үчүн гана. → Долбоорлор жана outbox керек, антпесе баалуулугу аз.
Эч кандай демпотенттик жок. → Ретрациялардагы транзакциялар. Демпотенттик ачкычтарды киргизиңиз.
Жашыруун чыр-чатактар. → Колдонуучу өзгөрүүлөрдү жоготот. DIFF/Grid көрсөтүү.
TTL жана кэш тазалоо жок. → Колдонмо шишип, ОС мажбурлап тазалайт.
Sink UI бөгөттөйт. → Sync ар дайым алкагында, UI - жооп.
Сырларды ачык сактоо. → Keychain/Keystore жана шифрлөө.
16) FAQ
Баары үчүн "толук" оффлайн жасоого болобу?
Көбүнчө жок: төлөмдөр, лицензияларды текшерүү жана тирүү маалыматтар тармакты талап кылат. Гибридди жасаңыз: кэштен окуу + кийинкиге калтырылган жазуулар.
Эмне тезирээк: SWR же Network First?
SWR кэштен тез жооп берет жана тынч жаңыртуу - тизмелер үчүн мыкты UX. Network First маанилүү сергектик жерде керек (кароо, баланс).
Кантип чоң медиа сактоо керек?
Миниатюраларды жана кыска мөөнөттүү TTL, оригиналдарды - суроо-талап боюнча, LRU тазалоо менен кэш.
Баарын шифрлөө керекпи?
PII/сырларды жана сезимтал жазууларды шифрлөө. Калганы тобокелдик саясаты жана квоталар боюнча.
Оффлайн SEO/PWAны начарлатабы?
Жок, туура SW жана ССР, тескерисинче, ылдамдыгын жана кайталап сапарлар жакшыртат.
Оффлайн режими - бул "белги" эмес, системалык архитектура: жергиликтүү БД + статикалык кэш + өзгөрүү кезеги + ишенимдүү синк жана ойлонулган UX статустары. Коопсуздук (шифрлөө, Keychain/Keystore), демпотенттик жана метриканы кошуу, начар тармакты сыноо - жана сиздин колдонмо Интернетсиз да пайдалуу бойдон кала берет, ал пайда болгондо, берилиштерди жана колдонуучунун ишенимин жоготпостон серверди үзгүлтүксүз кууп жетет.