Latviešu

Uzziniet, kā izmantot servisa darbiniekus, lai izveidotu bezsaistes prioritātes tīmekļa lietotnes, kas ir ātras, uzticamas un saistošas lietotājiem visā pasaulē.

Servisa darbinieki: Bezsaistes prioritātes tīmekļa lietotņu izveide

Mūsdienu pasaulē lietotāji sagaida, ka tīmekļa lietotnes būs ātras, uzticamas un pieejamas pat tad, ja tīkla savienojums ir ierobežots vai nav pieejams. Tieši šeit parādās "bezsaistes prioritātes" (offline-first) dizaina koncepcija. Servisa darbinieki ir jaudīga tehnoloģija, kas ļauj izstrādātājiem veidot tīmekļa lietotnes, kuras nevainojami darbojas bezsaistē, nodrošinot izcilu lietotāja pieredzi.

Kas ir servisa darbinieki?

Servisa darbinieks (service worker) ir JavaScript fails, kas darbojas fonā, atsevišķi no galvenā pārlūka pavediena. Tas darbojas kā starpniekserveris (proxy) starp tīmekļa lietotni un tīklu, pārtverot tīkla pieprasījumus un pārvaldot kešošanu. Servisa darbinieki var veikt tādus uzdevumus kā:

Svarīgi atzīmēt, ka servisa darbiniekus kontrolē pārlūkprogramma, nevis tīmekļa lapa. Tas ļauj tiem darboties pat tad, ja lietotājs ir aizvēris cilni vai pārlūka logu.

Kāpēc izvēlēties bezsaistes prioritāti?

Bezsaistes prioritātes tīmekļa lietotnes izveide sniedz daudzas priekšrocības:

Kā darbojas servisa darbinieki

Servisa darbinieka dzīves cikls sastāv no vairākiem posmiem:

  1. Reģistrācija: Servisa darbinieks tiek reģistrēts pārlūkprogrammā, norādot lietotnes darbības jomu (scope), kuru tas kontrolēs.
  2. Instalēšana: Servisa darbinieks tiek instalēts, un šī procesa laikā tas parasti kešo statiskos resursus.
  3. Aktivizēšana: Servisa darbinieks tiek aktivizēts un pārņem kontroli pār tīmekļa lietotni. Tas var ietvert veco servisa darbinieku dereģistrāciju un veco kešatmiņu tīrīšanu.
  4. Dīkstāve: Servisa darbinieks paliek dīkstāvē, gaidot tīkla pieprasījumus vai citus notikumus.
  5. Iegūšana (Fetch): Kad tiek veikts tīkla pieprasījums, servisa darbinieks to pārtver un var vai nu pasniegt kešoto saturu, vai iegūt resursu no tīkla.

Bezsaistes prioritātes ieviešana ar servisa darbiniekiem: soli pa solim pamācība

Šeit ir pamata piemērs, kā ieviest bezsaistes funkcionalitāti, izmantojot servisa darbiniekus:

1. solis: Reģistrējiet servisa darbinieku

Jūsu galvenajā JavaScript failā (piem., `app.js`):


if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js')
    .then(function(registration) {
      console.log('Servisa darbinieks reģistrēts ar darbības jomu:', registration.scope);
    })
    .catch(function(error) {
      console.log('Servisa darbinieka reģistrācija neizdevās:', error);
    });
}

Šis kods pārbauda, vai pārlūkprogramma atbalsta servisa darbiniekus, un reģistrē `service-worker.js` failu. Darbības joma (scope) nosaka, kurus URL servisa darbinieks kontrolēs.

2. solis: Izveidojiet servisa darbinieka failu (service-worker.js)

Izveidojiet failu ar nosaukumu `service-worker.js` ar šādu kodu:


const CACHE_NAME = 'my-site-cache-v1';
const urlsToCache = [
  '/',
  '/index.html',
  '/style.css',
  '/app.js',
  '/images/logo.png'
];

self.addEventListener('install', function(event) {
  // Veikt instalēšanas soļus
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        console.log('Kešatmiņa atvērta');
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request)
      .then(function(response) {
        // Trāpījums kešatmiņā – atgriezt atbildi
        if (response) {
          return response;
        }

        // SVARĪGI: Klonējiet pieprasījumu.
        // Pieprasījums ir straume, un to var izmantot tikai vienu reizi. Tā kā mēs to izmantojam
        // vienreiz kešatmiņai un vienreiz pārlūkprogrammai, lai veiktu iegūšanu (fetch), mums ir jāklonē atbilde.
        var fetchRequest = event.request.clone();

        return fetch(fetchRequest).then(
          function(response) {
            // Pārbaudiet, vai saņēmām derīgu atbildi
            if(!response || response.status !== 200 || response.type !== 'basic') {
              return response;
            }

            // SVARĪGI: Klonējiet atbildi.
            // Atbilde ir straume, un tā ir jāizmanto tikai vienu reizi.
            var responseToCache = response.clone();

            caches.open(CACHE_NAME)
              .then(function(cache) {
                cache.put(event.request, responseToCache);
              });

            return response;
          }
        );
      })
    );
});

self.addEventListener('activate', function(event) {

  var cacheWhitelist = [CACHE_NAME];

  event.waitUntil(
    caches.keys().then(function(cacheNames) {
      return Promise.all(
        cacheNames.map(function(cacheName) {
          if (cacheWhitelist.indexOf(cacheName) === -1) {
            return caches.delete(cacheName);
          }
        })
      );
    })
  );
});

Šis kods veic šādas darbības:

3. solis: Pārbaudiet savu bezsaistes funkcionalitāti

Lai pārbaudītu savu bezsaistes funkcionalitāti, varat izmantot pārlūkprogrammas izstrādātāja rīkus. Pārlūkā Chrome atveriet DevTools, dodieties uz cilni "Application" un atlasiet "Service Workers." Jūs varat tad simulēt bezsaistes režīmu, atzīmējot izvēles rūtiņu "Offline".

Padziļinātas servisa darbinieku tehnikas

Kad esat ieguvis pamatzināšanas par servisa darbiniekiem, varat izpētīt padziļinātākas tehnikas, lai uzlabotu savu bezsaistes prioritātes lietotni:

Kešošanas stratēģijas

Ir vairākas kešošanas stratēģijas, kuras varat izmantot atkarībā no resursa veida un jūsu lietotnes prasībām:

Pareizās kešošanas stratēģijas izvēle ir atkarīga no konkrētā resursa un jūsu lietotnes prasībām. Piemēram, statiskus resursus, piemēram, attēlus un CSS failus, bieži vien vislabāk pasniegt, izmantojot "Vispirms kešatmiņa" stratēģiju, savukārt dinamiskam saturam varētu būt piemērotāka "Vispirms tīkls" vai "Kešatmiņa, tad tīkls" stratēģija.

Fona sinhronizācija

Fona sinhronizācija ļauj atlikt uzdevumus, līdz lietotājam ir stabils tīkla savienojums. Tas ir noderīgi tādiem uzdevumiem kā veidlapu iesniegšana vai failu augšupielāde. Piemēram, lietotājs attālā Indonēzijas reģionā var aizpildīt veidlapu bezsaistē. Pēc tam servisa darbinieks var gaidīt, līdz būs pieejams savienojums, pirms iesniegt datus.

Pašpiegādes paziņojumi (Push Notifications)

Servisa darbiniekus var izmantot, lai nosūtītu lietotājiem pašpiegādes paziņojumus pat tad, ja lietotne nav atvērta. To var izmantot, lai atkārtoti iesaistītu lietotājus un sniegtu savlaicīgus atjauninājumus. Iedomājieties ziņu lietotni, kas reāllaikā sniedz lietotājiem brīdinājumus par jaunākajām ziņām neatkarīgi no tā, vai lietotne ir aktīvi palaista.

Workbox

Workbox ir JavaScript bibliotēku apkopojums, kas atvieglo servisa darbinieku izveidi. Tas nodrošina abstrakcijas tādiem bieži sastopamiem uzdevumiem kā kešošana, maršrutēšana un fona sinhronizācija. Workbox izmantošana var vienkāršot jūsu servisa darbinieka kodu un padarīt to vieglāk uzturējamu. Daudzi uzņēmumi tagad izmanto Workbox kā standarta komponentu, izstrādājot PWA un bezsaistes prioritātes pieredzes.

Apsvērumi globālai auditorijai

Veidojot bezsaistes prioritātes tīmekļa lietotnes globālai auditorijai, ir svarīgi ņemt vērā šādus faktorus:

Bezsaistes prioritātes lietotņu piemēri

Vairākas populāras tīmekļa lietotnes ir veiksmīgi ieviesušas bezsaistes funkcionalitāti, izmantojot servisa darbiniekus:

Noslēgums

Servisa darbinieki ir spēcīgs rīks, lai veidotu bezsaistes prioritātes tīmekļa lietotnes, kas ir ātras, uzticamas un saistošas. Kešojot resursus, pārtverot tīkla pieprasījumus un veicot fona uzdevumus, servisa darbinieki var nodrošināt izcilu lietotāja pieredzi pat tad, ja tīkla savienojums ir ierobežots vai nav pieejams. Tā kā tīkla piekļuve visā pasaulē joprojām ir nevienmērīga, koncentrēšanās uz bezsaistes prioritātes dizainu ir ļoti svarīga, lai nodrošinātu vienlīdzīgu piekļuvi informācijai un pakalpojumiem tīmeklī.

Ievērojot šajā rokasgrāmatā izklāstītos soļus un ņemot vērā iepriekš minētos faktorus, jūs varat izveidot tīmekļa lietotnes, kas nevainojami darbojas bezsaistē un nodrošina apburošu pieredzi lietotājiem visā pasaulē. Izmantojiet servisa darbinieku spēku un veidojiet tīmekļa nākotni – nākotni, kurā tīmeklis ir pieejams ikvienam, visur, neatkarīgi no tīkla savienojuma.