Recent am avut cateva zile de experiente extrem de frustrante cu lucratorii din servicii. Iata cateva lucruri pe care le-am invatat de atunci, care mi-ar fi facut viata mult mai usoara, dar care nu este deosebit de evident din majoritatea postarilor si videoclipurilor pe care le-am vazut.
Voi adauga la aceasta lista de-a lungul timpului – adaugarile sugerate sunt binevenite in comentarii sau prin twitter.com/rich_harris.
Utilizati Canary pentru dezvoltare in loc de Chrome stabil
Chrome 51 are un comportament destul de salbatic legat de console.log in lucratorii de service. Canary nu, si are o multime de lucruri foarte bune legate de lucratorii de servicii in devtools.
^ nu mai este necesar
Reincarcarea paginii nu se comporta asa cum v-ati astepta
Daca modificati lucratorul de service, reincarcarea paginii nu o va ucide pe cea veche si o va activa pe cea noua (aceasta detecteaza modificarea solicitand fisierul lucratorului de service de fiecare data si comparand vechiul si noul octet-pentru- octet), lasandu-va oarecum confuz cu privire la motivele pentru care modificarile dvs. nu au intrat in vigoare. Acest lucru se datoreaza faptului ca vechea fereastra nu este niciodata inchisa, ceea ce inseamna ca nu exista niciodata timp pentru a le schimba – trebuie sa omoriti fila complet, apoi sa o redeschideti.
Sau puteti solicita browserului acest lucru accesand fila Aplicatie din devtools (in Canary, Chrome inca nu stabil), accesand sectiunea Service Workers si verificand „Actualizare la reincarcare”.
Noul lucrator de serviciu nu este preluat de cel vechi
O vreme m-am gandit ca poate motivul pentru care modificarile mele nu aveau efect a fost acela ca vechiul lucrator de serviciu servea o versiune cache a sa, deoarece intercepta toate cererile si le pastra in cache. Asa ca faceam tot felul de lucruri mincinoase, cum ar fi inregistrarea service-worker.js? $ {Math.random ()} in incercarea de a o „remedia”.
Se pare ca, atunci cand apelati navigator.serviceWorker.register („service-worker.js), cererea pentru service-worker.js nu este interceptata de catre niciun operator de preluare a evenimentelor.
navigator.serviceWorker.controller este lucratorul de service care intercepteaza cererile de preluare
Prima data cand incarcati o pagina, navigator.serviceWorker.controller === nul. Acest lucru continua sa fie adevarat dupa ce un lucrator de service a fost inregistrat si instalat cu succes.
porno comic español videos putas maduras
ver sexo gratis coños de viejas
tetudas españolas porno madres peludas
incesto real madre hijo porno traducido español
abuelas follando como folla mi mujer
incesto jovencitas hentaihd
sexso madura cabalgando
penes de abuelos paja en el coche
vidio pirno videosgays
corridas dentro de la boca caras llenas de semen
sobando tetas folladas extremas
sexo camara oculta españa porno casero real español
porno guey orgia bisexual
madura española con joven tetudas españolas
pollas corriendose porno torrent magnet
videos de peliculas eroticas videos de chicas gratis
orgias abuelas parejas pilladas en la calle
peliculas porno de incesto maduras por dinero
glory hole españa www rubias
milfs españolas follando tetudas jovenes
(Relatia dintre navigator.serviceWorker.controller si lucratorii de servicii pe care o puteti obtine prin navigator.serviceWorker.getRegistration () continua sa fie usor confuza pentru mine – mai ales atunci cand vine vorba de a sti la care lucrator de service ar trebui sa trimiteti mesaje daca trebuie sa trimiteti mesaje. Si nu ma lasati sa ma apuc de self.skipWaiting () si self.clients.claim (), ceea ce pare a fi o reteta pentru haos. Desi sunt sigur ca este doar o chestiune de a intelege cand sa le folosesti.)
Puteti accesa self.caches in browser ca window.caches
Daca utilizati lucratori de service, probabil ca cacheti resursele care alcatuiesc shell-ul aplicatiei. Poate, la fel ca mine, doriti sa oferiti utilizatorului sa descarce separat continut , de exemplu sa aduca fisiere mari in timp ce acestea sunt conectate la WiFi, astfel incat sa nu-si mestece planul de date. Daca da, probabil ca doriti un fel de notificare de progres.
Primul meu instinct a fost sa-l pun pe lucratorul de service sa faca tot cache-ul in fundal (si sa verifice fisierele care sunt deja stocate in cache, important) si sa transmita mesaje catre clientii conectati. Asta e de rahat pentru ca mesageria lucratorilor de serviciu e de rahat. Dar se pare ca nu este necesar, deoarece puteti face acest lucru direct in client:
(Evident ca ati dori probabil o strategie mai detaliata care sa permita raportarea progresului descarcarii, dar veti avea ideea.)
Nu esti singur
Multi oameni au experimentat aceleasi frustrari pe care le aveti si stiu cum sa le rezolve. In special, Jake si alti oameni de la Google si Mozilla implicati in implementarea acestor lucruri sunt nejustificat de utili daca ii contactati (nu ca va incurajez sa le spamati mentiunile de fiecare data cand va blocati, dar daca chiar aveti nevoie de ajutor … ).
Inca cred ca API-ul este putin cam dificil in mai multe locuri (daca conventia JS pentru relatia de denumire dintre instante si clase este foo = new Foo (), de ce este navigator.serviceWorker o instanta a ServiceWorkerContainer in timp ce navigator.serviceWorker.controller este un exemplu de ServiceWorker? Si ce naiba este un ServiceWorkerRegistration? Nu conteaza toate celelalte interfete pe care acum trebuie sa le invatam) si sunt ingrijorat de cat de usor de invatat sunt aceste lucruri de catre oamenii care nu au timpul si inclinatia de a studia greu, dar cel putin sa stiu lucrurile de mai sus mi-a facut experienta cu lucratorii de service mult mai placuta.
Lucruri pe care inca nu le inteleg
- Daca am cod in lucratorul meu de service care ruleaza in afara unui handler de evenimente, cand ruleaza?
- Probabil cateva alte lucruri pe care le-am uitat deocamdata








