0

내 PWA에서 사용자의 활동을 추적하려고합니다. 현재 URI로 각 사이트 노출에 대한 요청을 내 서버로 보낼 수 있습니까?서비스 작업자의 현재 URL 변경 사항을 추적하는 방법은 무엇입니까?

시나리오 : 현재 URI로 PWA -> 요청을 엽니 다. 사용자가 현재 URI로 서브 페이지 -> 보내기 요청을 엽니 다.

내 예를 들어 서비스 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

당신은 단지 창에서'hashchange' 이벤트를 듣고 원하는대로 할 수 있습니다. –

+0

@JPrakash : 감사합니다! – CYGS

답변

0

이 질문은 아마 다음과 같이 표현한해야합니다

파일이 캐시에서 처리 될 때 내 분석 패키지의 페이지 뷰를 추적 할 수있는 방법

?

활동을 확실히 조정했기 때문에 이것은 매우 좋은 질문입니다.

서버 로그를 기반으로 한 활동 만 추적하는 경우 매번 네트워크 요청을 수행해야합니다. 이것은 조금 비효율적이고 오래된 학교 IMO입니다. 그러나 활동을 추적하는 귀하의 방법이라면이를 다루는 방법을 구축하십시오. 로그를 업데이트하려면 일종의 가짜 AJAX 방법을 만들어야합니다. 물론 캐시를 신선한 상태로 유지하면서 전략을 다시 검증하는 동안 사용할 수 있습니다.

Google Analytics와 같은 서비스를 사용하는 경우 프로그래밍 방식으로 트래픽을 유발합니다. 이 서비스에 대한 좋은 점은 서버가 아니라 UI에서 측정하기 때문에 활동을 로깅하도록 아무 것도 변경하지 않아도된다는 것입니다.

소비자가 오프라인 일 때 활동을 허용하면 온라인 상태가되면 활동을 큐에 넣고 재생해야합니다. 여기서 배경 동기화 API가 광범위하게 지원되면 유용합니다.

희망이 도움이됩니다. 더 많은 질문과 설명이 있으면 알려주십시오.