Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
IndexedDB'yi Angular'da Kullanmak: Schema Versiyonlama, Transaction'lar ve Offline Outbox
IndexedDB'de schema yalnız sürüm artırınca onupgradeneeded içinde değişir ve transaction, IndexedDB dışı bir await'te kendiliğinden commit edilir; bu yüzden ağ işi önce, yazmalar sonra yapılır. Sürüm başına migration'ları, TransactionInactiveError'u, başka sekmenin upgrade'i bloklamasını Chromium ve WebKit'te gösteriyor, Angular'da idb ile okuma listesini ve offline yorumları idempotency key ile çift kayıtsız gönderen bir outbox'ı kuruyoruz.
Service Worker Yaşam Döngüsü ve Cache Stratejileri: install, activate, waiting, skipWaiting ve Stale-While-Revalidate
Yeni bir service worker, eski sürümün bütün sekmeleri kapanana ya da skipWaiting çağrılana kadar waiting'de bekler; tek sekmeyi yenilemek yetmez. Framework'süz bir worker ile yaşam döngüsünü Chromium ve WebKit'te adım adım gösteriyor, skipWaiting'in eski sayfa ile yeni chunk'ı karıştırmasını, updateViaCache'i, cache-first/network-first/stale-while-revalidate stratejilerini, HTTP cache tuzağını ve worker'ı geri çeken kill switch'i inceliyoruz.
Angular Service Worker ile Offline Çalışan Uygulama: ngsw-config, dataGroups, SwUpdate ve Güvenli Deploy
Angular Service Worker uygulama dosyalarını assetGroups ile, API cevaplarını dataGroups ile cache'ler ve sürümü build'in ürettiği hash'li ngsw.json'dan anlar; yeni sürümü SwUpdate.versionUpdates ile haber verip kullanıcıya tam yenileme yaptırırsın. Production build'de offline senaryoyu, VERSION_READY'yi, eski dosya silinince gelen unrecoverable durumunu, deploy cache header'larını ve safety-worker.js ile worker'ı geri çekmeyi Chromium ve WebKit'te gösteriyoruz.