0

Je veux suivre les activités de l'utilisateur dans mon PWA. Est-il possible d'envoyer une requête à mon serveur sur chaque impression de site avec l'URI en cours? Scénario: L'utilisateur ouvre la demande PWA -> avec l'adresse URI en cours. L'utilisateur ouvre une sous-page -> demande d'envoi avec l'URI en cours.Comment suivre les modifications d'URL actuelles dans le service worker?

Mon exemple de service-worker.js:

var cacheName = 'weatherPWA-step-6-2'; 
var filesToCache = [ 
    '/', 
    '/index.html', 
    '/scripts/app.js', 
    '/styles/inline.css', 
    '/images/clear.png', 
    '/images/cloudy-scattered-showers.png', 
    '/images/cloudy.png', 
    '/images/fog.png', 
    '/images/ic_add_white_24px.svg', 
    '/images/ic_refresh_white_24px.svg', 
    '/images/partly-cloudy.png', 
    '/images/rain.png', 
    '/images/scattered-showers.png', 
    '/images/sleet.png', 
    '/images/snow.png', 
    '/images/thunderstorm.png', 
    '/images/wind.png' 
]; 

self.addEventListener('install', function(e) { 
    console.log('[ServiceWorker] Install'); 
    e.waitUntil(
    caches.open(cacheName).then(function(cache) { 
     console.log('[ServiceWorker] Caching app shell'); 
     return cache.addAll(filesToCache); 
    }) 
); 
}); 

self.addEventListener('activate', function(e) { 
    console.log('[ServiceWorker] Activate'); 
    e.waitUntil(
    caches.keys().then(function(keyList) { 
     return Promise.all(keyList.map(function(key) { 
     if (key !== cacheName) { 
      console.log('[ServiceWorker] Removing old cache', key); 
      return caches.delete(key); 
     } 
     })); 
    }) 
); 
    return self.clients.claim(); 
}); 

self.addEventListener('fetch', function(e) { 
    console.log('[ServiceWorker] Fetch', e.request.url); 
    console.log("Url", Client.url); 
    e.respondWith(
    caches.match(e.request).then(function(response) { 
     return response || fetch(e.request); 
    }) 
); 
}); 
+0

vous pouvez simplement écouter l'événement 'hashchange' sur la fenêtre et faire ce que vous voulez. –

+0

@JPrakash: Merci! – CYGS

Répondre

0

cette question devrait probablement être formulées comme ceci:

Comment puis-je suivre les pages vues dans mon package d'analyse lorsque les fichiers sont servis à partir du cache ?

C'est une bonne question parce que vous ajustez définitivement l'activité.

Si vous suivez uniquement l'activité en fonction des journaux de votre serveur, vous devrez effectuer une requête réseau à chaque fois. C'est un peu inefficace et vieille école IMO. Mais si c'est votre façon de suivre l'activité, construisez un moyen de faire face à cela. Vous devrez créer une sorte de faux AJAX pour mettre à jour les journaux. Bien sûr, vous pouvez utiliser cela pour garder votre cache frais, l'éventuel tout revalider stratégie.

Si vous utilisez un service tel que Google Analytics, vous déclenchez le trafic par programmation. La bonne chose à propos de ces services est que vous n'avez pas besoin de changer quoi que ce soit pour déclencher l'activité de journalisation car ils mesurent à partir de l'interface utilisateur, pas du serveur.

Si vous autorisez une activité lorsque le consommateur est hors ligne, vous devez mettre l'activité en file d'attente et la rejouer une fois de retour en ligne. C'est là que l'API de synchronisation en arrière-plan sera utile une fois qu'elle aura un large soutien.

Espérons que cela aide. Faites-moi savoir si vous avez d'autres questions et clarifications.