Teknike
Service worker
Skripti që rri midis faqes dhe rrjetit dhe mundëson punë pa internet; mjeti kërkon vetëm dy vargje në HTML.
Çfarë është
Një service worker është një skript që xhiron veçmas nga faqja dhe ndërhyn midis saj dhe rrjetit. Ai mund t'i përgjigjet kërkesave nga cache-i, të ruajë burime për përdorim pa internet, dhe të marrë njoftime push edhe kur faqja është e mbyllur.
Ai regjistrohet nga faqja me navigator.serviceWorker.register() dhe pastaj jeton më gjatë se ajo.
Kërkon HTTPS — me përjashtimin e vetëm të localhost — sepse fuqia e tij është e madhe: ai mund të ndryshojë çdo përgjigje që merr faqja.
Pse ka rëndësi
Ndikimi te renditja është zero. Ky konstatim nuk është detyrë SEO.
Vlera reale është në tri raste konkrete. Puna pa internet, kur përdoruesi është në lëvizje ose në lidhje të dobët. Njoftimet push, të domosdoshme kur diçka zgjat gjatë dhe përdoruesi nuk mund të presë me faqen hapur. Ngarkimi i menjëhershëm i vizitave të përsëritura, sepse burimet vijnë nga cache-i lokal.
Nëse asnjëra nga këto nuk të duhet, service worker-i është kompleksitet i shtuar pa përfitim.
Dhe ka një rrezik të vërtetë që duhet ditur para se ta shtosh: një service worker i shkruar keq mund t'i shërbejë përdoruesit versione të vjetra të faqes për ditë të tëra, dhe heqja e tij nga pajisjet ku është instaluar është e vështirë.
Si rregullohet
// te faqja
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}// te /sw.js — strategji e thjeshtë: rrjeti i pari, cache si rezervë
self.addEventListener('fetch', (e) => {
e.respondWith(
fetch(e.request).catch(() => caches.match(e.request))
);
});Hapat:
- Shto vetëm nëse ke një nevojë të emërtuar. Shkruaje atë nevojë para se të shkruash kodin.
- Ndrysho emrin e cache-it te çdo publikim dhe fshi të vjetrat te ngjarja
activate. - Mos e ruaj HTML-në pa strategji rifreskimi. Kjo është shkaku i faqeve të ngecura.
- Parashiko një dalje: një mënyrë për ta çregjistruar nëse diçka shkon keq.
- Testo me rrjetin e fikur, jo vetëm me atë të ndezur.
Si e mat ky mjet
PWAAnalyzer::analyze() (services/PWAAnalyzer.php:32) kërkon nënvargjet serviceWorker.register ose navigator.serviceWorker brenda tekstit të plotë të HTML-së. Nëse gjen njërin, shton 25 pikë dhe jep konstatim të kaluar (:36); përndryshe jep konstatim informativ (:39).
Çfarë NUK e mat
Kontrolli është kërkim nënvargu mbi HTML-në, jo verifikim. Ai gjen tekstin edhe kur ai rri brenda një komenti, brenda një stringu që nuk ekzekutohet kurrë, ose brenda një kushti që nuk plotësohet.
Më e rëndësishmja: skriptet e jashtme nuk lexohen. Një faqe që e regjistron service worker-in brenda një pakete .js — mënyra normale sot — raportohet si pa service worker dhe humb 25 pikë pa shkak.
Skedari i service worker-it nuk merret, nuk analizohet dhe nuk verifikohet se ekziston. Nuk kontrollohet as shtrirja e tij, as nëse regjistrimi ka sukses.
Pra ky kontroll mat një gjurmë teksti, jo një aftësi.
Kodi që e kryen matjen
services/PWAAnalyzer.php:32— hasSWservices/PWAAnalyzer.php:36— Service Worker Detected