- Panel Aplikacija koncentriše manifest, servisne radnike, keš memorije i skladištenjeKontroliranje životnog ciklusa softvera i strategija keširanja sprječava zastarjeli sadržaj. Testirajte na stvarnim uređajima i koristite udaljeno otklanjanje grešaka za validaciju instalacije. Vodite računa o kvoti, IndexedDB-u, performansama i praćenju za robusnu PWA.
Dobra vijest je da nam moderni preglednici pružaju sve što nam je potrebno da vidimo kako oni unutra rade: panel aplikacija u DevTools-u, emulatore, udaljeno otklanjanje grešaka i uslužne programe za manifeste, keš memorije i pohranu . Proći ćemo kroz sve korak po korak, s praktičnim tehnikama i preporukama koje će vam pomoći da glatko prođete kroz proces.
Primjena panela: operativni centar za PWA-e
Panel aplikacija u DevTools-u je švicarski nožić posebno za PWA-ove: odavde možete pregledati manifest, kontrolirati servisne radnike, pregledati keš memorije i upravljati pohranom. To je početna tačka za pregled, modifikaciju i otklanjanje grešaka ključnih elemenata koji čine PWA posebnim.
Njegovi najrelevantniji odjeljci za PWA-ove su: Manifest (za pregled manifesta i njegove instalacije), Service Workers (za upravljanje životnim ciklusom, simulacije i stanje), Cache Storage (za pregled keširanih resursa) i Storage/Clear Storage (za brisanje logova i podataka odjednom). U Chromium preglednicima, odavde možete emulirati i offline način rada i ključne događaje.
Brzi savjet : Ako testirate česte promjene i servisni radnik se ponaša neispravno, koristite opcije Ažuriraj pri ponovnom učitavanju i Zaobiđi mrežu da biste prisilili ažuriranja ili privremeno zanemarili keš memoriju tokom otklanjanja grešaka.

Web manifest: instalacija, prezentacija i fino podešavanje
Manifest web aplikacije definira kako se PWA predstavlja: naziv, kratki naziv, ikone, početni URL, prikaz, boje i još mnogo toga. Ako sve uradite kako treba, korisnici će moći instalirati aplikaciju na Windows (Start), macOS (Aplikacije) ili na početne ekrane Androida i iOS-a.
U Aplikacija > Manifest , vidjet ćete status manifesta, njegova polja organizirana u blokove Identitet i Prezentacija, te listu Ikona s maskama za provjeru sigurnih područja u ikonama koje se mogu maskirati. Također su prikazani odjeljci za Obrađivače protokola za testiranje registracije obrađivača URL-ova, Prečica #N s definiranim prečicama i Snimak ekrana #N za pregled snimaka ekrana korištenih u bogatom dijalogu za instalaciju.
Instalabilnost i greške : Ako postoje problemi (na primjer, ikona se ne učitava), pojavit će se odjeljak Instalabilnost s detaljima. Držite konzolu otvorenu kada pokrenete instalaciju; ona će vas u stvarnom vremenu obavijestiti ako nešto blokira proces.
Testiranje instalacije na desktop računaru je jednostavno pomoću dugmeta Instaliraj u adresnoj traci, iako možete testirati stvarni mobilni tok pomoću udaljenog otklanjanja grešaka na Android ili iOS uređaju. Ako ga možete dodati na Chrome desktop računar, trebao bi raditi i na mobilnim uređajima.

Servisni radnici: Životni ciklus, simulacije i ozbiljne greške
- Servisni radnici Oni su srce PWA-a: rade u pozadini, presreću zahtjeve, omogućavaju keširanje, push obavještenja, sinhronizaciju u pozadini i offline načinDobro otklanjanje grešaka je razlika između responzivne PWA i one koja zastarijeva ili se pokvari pri prvom dodiru.
- Aplikacija > Servisni radnici Ovo je centralna naredba: vidjet ćete aktivni zapis u trenutnom izvoru, njegov opseg, izvor (s vezom do koda), status i ID pokrenutog radnika. zaustavi ili pokreni ručno simulirati ponovno pokretanje i tražiti greške loše pretpostavke o globalnom stanju.
- Ključni prekidači: Offline (prebacuje karticu u offline stanje, baš kao i Network), Update on reload (forsira ažuriranje pri svakom reloadu), Bypass for network (ignorira SW i prelazi na mrežu) i radnje poput Update, Push (push bez korisnog opterećenja), Sync (simulira događaje sinhronizacije) ili Unregister (briše trenutnu registraciju). Ako postoje greške, vidjet ćete Značka za greške sa direktnim pristupom Konzoli.
- Pogledajte sve zapiseU Chromiumu, link "pogledaj sve" vodi vas na chrome://serviceworker-internals/?devtools, gdje možete detaljno pregledati. U Edgeu postoje ekvivalentne opcije, uključujući detalje o klijentu i fokus za prelazak na povezanu karticu.

Keš memorije, kvote i pohrana: izbjegnite iznenađenja s ograničenjima
- Keš memorija Prikazuje, u načinu rada samo za čitanje, resurse koje je vaš softver pohranio pomoću Cache API-ja. Imajte na umu da kada prvi put otvorite keš memoriju i dodate resurs, DevTools ga možda neće odmah otkriti: osvježite stranicu da ga vidite na popisu.
- Korištenje kvote i neprozirni odgovoriNeki odgovori će se pojaviti kao "neprozirni" (CORS nije omogućen, različito porijeklo, CDN). Da bi se spriječilo curenje informacija, preglednici primjenjuju podstava po veličini prijavljeno; u Chromeu/Edgeu, svaki keširani neprozirni odgovor doprinosi minimalno ~7 MB broju pohrane. Ovo može izazvati QuotaExceeded ranije nego što se očekivalo ako zloupotrebljavate neprozirnost.
- Čisto spremište Omogućava vam da odregistrujete servisnog radnika i obrišete sve keš memorije i pohranu jednim klikom. To je pravi dar s neba kada vam je potreban... čisto stanje i osigurati da naknadni testovi ne otkriju nikakve ostatke.
- skladištenje Centralizira lokalnu/sesijsku pohranu, IndexedDB, kolačiće, kvotu i dugme za brisanje podataka. Koristite ga za pregled IndexedDB tabela, statusa web pohrane i izmjerite ukupno zauzeto za vašu PWA na uređaju.
Instalacija, prečice, snimci ekrana i protokoli
- Prečice aplikacija prikažite uobičajene radnje iz instalirane ikone. U kartici Manifest vidjet ćete svaku prečicu #N s njenim detaljima; dodajte samo one koje korisnik zapravo koristi kako ne biste preopteretiti meni.
- Snimci ekrana obogatite dijalog za instalaciju. Pregledajte ih na snimku ekrana #N kako biste potvrdili formate, tekstove i da li dobro predstavljaju vaš tok vrijednosti u prvi utisak.
- Obrađivači protokola Registrujte svoju PWA da rukuje linkovima sa vlastitom shemom (npr. web+nešto). U Aplikacija > Manifest možete testirati protokol unosom URL-a i omogućavanjem PWA-u da ga obradi ako je registrovan.
- Dijagnoza instalacije U Chromiumu: Na Androidu otvorite about:wepapk da biste vidjeli aplikacije instalirane putem WebAPK-a i zatražili ažuriranja; na desktopu imate about:apps (prijateljska lista) i about:app-service-internals (prikaz za otklanjanje grešaka) za pregled. status i ažuriranja.
Razvojni ciklus: Testirajte promjene i ne borite se s keš memorijom
- Brza iteracija- Tokom razvoja, najbrži način je unos lokalnog URL-a (npr. http://localhost:8080) i ponovno učitavanje pomoću F5. Budući da softver već kešira statičke datoteke, vaše promjene se možda neće odraziti: koristite Isprazni keš memoriju i ponovo pohrani (desni klik na dugme Ponovo učitaj) ili označite Zaobiđi mrežu u Servisnim radnicima.
- Manifest i ponovno imenovanje- Ako promijenite manifest, instalirajte PWA kako biste potvrdili kriterije za instalaciju. Ako ponovo modificirate manifest, deinstalirajte ga i ponovo ga instalirajte radi provjere. sve promjene pouzdano.
- Otklanjanje grešaka u softverskom koduU Izvorima možete preći na kontekst radnika da biste postavili tačke prekida i pratili izvršavanje niti servisnog radnika nezavisno od stranice. Ovo je ključno za potraga za greškama u životnom ciklusu.
- Pozadinske uslugeU Chromiumu, Aplikacija > Pozadinske usluge vam omogućavaju snimanje push-a, sinhronizacije i sličnih događaja putem SW API-ja da biste vidjeli šta se dešava u pozadini nema aktivnog prozora.
Testiranje na uređajima, emulatorima i udaljeno otklanjanje grešaka
- Način rada uređaja U DevTools-u vam omogućava simuliranje veličina ekrana, UA-a i mreže. Korisno je za responzivni dizajn i mrežne uslove, ali ne pokriva u potpunosti sve zahtjeve. instalacija, način prikaza i prečiceZa to je bolje odabrati uređaje ili simulatore.
- Simulator jabuke (macOS sa Xcode-om) vam omogućava testiranje na pravim iPhone-ima i iPad-ima na nivou engine-a, sa mobilnim Safarijem i Web.app-om za PWA-ove. Korisne prečice: Command-Shift-H (Home), Control-Command-Shift-H (Prebacivač aplikacija) i rotiranje sa Command-Desno/LijevoKorištenjem localhost-a, ukazuje se na localhost od Mac, što je veoma povoljno.
- Android Emulator (Android Studio) sa slikama koje uključuju Play usluge vam omogućava da instalirate Chrome i druge preglednike iz Play trgovine ili putem APK-a. Imajte na umu da svaki AVD može zauzeti 5 GB ili više, a vaš lokalni host nije host vašeg računara: Za lokalne URL-ove, konfigurirajte prosljeđivanje portova iz Chromium DevToolsa.
- Daljinsko otklanjanje grešakaGlavni preglednici podržavaju daljinsku inspekciju. U WebKitu, Remote Inspector za Safari i PWA instalirane na iOS/iPadOS-u; u Chromiumu, Remote Debugging za Chrome, Edge ili Samsung Internet; i Udaljeno otklanjanje grešaka u Firefoxu za Android. Povežite se putem USB, uključite otklanjanje grešaka i vidjet ćete stranice i aplikacije koje trebate pregledati.
- PWA instalirane na Androidu može se otkloniti greškama pomoću Chromium alata za daljinsko upravljanje; vidjet ćete kontekst aplikacije i moći ćete otvoriti DevTools kao da je kartica, što je odlično za dijagnosticiranje problema s instalacijom ili SW u WebAPK-u.
Safari i Firefox: Šta možete očekivati od svojih alata
Safari ima ograničeniju podršku za PWA-ove: ne postoji inspektor stanja softvera, pregled keša ili alati za manifest i instalaciju na iOS/iPadOS-u. Međutim, možete otvoriti pokrenuti inspektor softvera koristeći Razvoj > Servisni radnici (Konzola, Izvori i Mreža). Proširenja poput Detektora servisnih radnika pomažu u popunjavanju ovih praznina.
Firefox podržava servisne radnike na svim platformama i ima manifest za instalaciju na Androidu. U Alatima za razvojne programere > Aplikacija > Servisni radnici možete pregledati registraciju, status i poništiti je, a u Aplikacija > Manifest možete pregledati vrijednosti. Pohrana vam omogućava besprijekorno upravljanje IndexedDB i Cache pohranom.
Strategije za keš memoriju, offline i ažuriranje sadržaja
Tipičan problem : zastarjeli sadržaj zbog loše implementirane strategije "prvo keširanje". Za resurse koji se često mijenjaju, razmotrite strategiju "prvo mreža" ili "keširanje pa mreža", a "prvo keširanje" rezervirajte za zaista nepromjenjive statičke podatke.
Primjer koji prvo koristi mrežu (prilagođeno): self.addEventListener('fetch', (event) => {\n event.respondWith(\n caches.match(event.request).then((cached) => {\n return cached || fetch(event.request).then((networkResponse) => {\n return caches.open('dynamic-cache').then((cache) => {\n cache.put(event.request, networkResponse.clone());\n return networkResponse;\n });\n });\n })\n );\n});
Van mreže sa stranicom za rezervacijuKeširajte offline.html datoteku u instalaciji i koristite je kao rezervnu opciju kada dohvaćanje ne uspije. Na ovaj način korisnik vidi korisna poruka umjesto praznog ekrana. self.addEventListener('install', (event) => {\n event.waitUntil(\n caches.open('static-cache').then((cache) => cache.addAll(['/offline.html']))\n );\n});\nself.addEventListener('fetch', (event) => {\n event.respondWith(\n fetch(event.request).catch(() => caches.match('/offline.html'))\n );\n});
Ažurirajte softver bez problema: koristi self.skipWaiting() prilikom instalacije i predlaže UX za ponovno učitavanje kada se pojavi nova verzija. Na ovaj način izbjegavate da korisnici ostanu sa stare verzije dok se svi tabovi ne zatvore. self.addEventListener('install', (event) => {\n self.skipWaiting();\n});
Push, sinhronizacija u pozadini i pozadinski zadaci
Push NotificationsIz Aplikacija > Servisni radnici možete emulirati push bez korisnog tereta kako biste validirali korisnički interfejs. Obavezno definišite ikona, radnje i podaci obogatiti obavještenje. self.addEventListener('push', (event) => {\n const options = {\n body: 'Tienes novedades',\n icon: '/images/icon.png',\n actions: [{ action: 'open', title: 'Abrir' }, { action: 'dismiss', title: 'Cerrar' }]\n };\n event.waitUntil(self.registration.showNotification('Actualización disponible', options));\n});
Dozvole : Zahtijevajte obavještenja u odgovarajuće vrijeme i efikasno rješavajte "odbijene" zahtjeve bez ponavljanja. Ponudite alternative unutar aplikacije kako biste izbjegli uznemiravanje korisnika koji ne žele obavještenja.
Pozadinska sinhronizacijaStavlja operacije u red čekanja kada nema mreže i ponovo pokušava nakon ponovnog povezivanja. Korisno za vanmrežne obrasce ili redove čekanja za otpremanje. self.addEventListener('sync', (event) => {\n if (event.tag === 'sync-data') {\n event.waitUntil(syncData());\n }\n});\nfunction syncData() {\n return fetch('/api/sync', {\n method: 'POST',\n body: JSON.stringify(offlineQueue),\n headers: { 'Content-Type': 'application/json' }\n });\n}
Pozadinske usluge u Chromiumu snimaju događaje u pozadini (push, sinhronizaciju itd.) kako bi se vidjelo šta se dešava kada nema prozora. To je savršeno za reviziju radnih procesa koji ne zavise od fokusa stranice.
Veliki podaci: IndexedDB, performanse i memorija
Koristite keš memoriju za statičke i kritične resurse; za velike skupove podataka ili korisnički generirani sadržaj koristite IndexedDB . Asinhrona je, otporna i izbjegava ograničenja kvota zbog neprozirnih odgovora. Organizirajte pohrane s jasnim ključevima za brzo i pouzdano čitanje.
Minimalni primjer indeksirane baze podataka: let db;\nconst req = indexedDB.open('PWA-Data', 1);\nreq.onupgradeneeded = (e) => e.target.result.createObjectStore('dataStore');\nreq.onsuccess = (e) => { db = e.target.result; };\nfunction storeData(key, data) {\n const tx = db.transaction('dataStore', 'readwrite');\n tx.objectStore('dataStore').put(data, key);\n}
Optimizirajte performanseKomprimira slike, minimizira CSS/JS, dijeli pakete (splitChunks), odgađa nekritična učitavanja i izrezuje skripte trećih stranaAlati poput Webpacka olakšavaju pametno pakovanje. optimization: { splitChunks: { chunks: 'all' }, minimize: true }
Memoria- Pratite curenja pomoću kartice DevTools Memory; uklonite nekorištene slušače i izbjegnite držanje ogromnih objekata u memoriji. Jednostavan removeEventListener s vremenom te to spasi degradacije i padovi na skromnijim uređajima.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje kroz pisanje, a to je ono što ću raditi na ovom blogu, pokazivati vam sve najzanimljivije stvari o gadžetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se krećete u digitalnom svijetu na jednostavan i zabavan način.