Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PWA Service worker
gucio1
post 29.04.2019, 10:26:55
Post #1





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 30.04.2016

Ostrzeżenie: (0%)
-----


Witam,
próbuję zrobić ze swojej strony aplikację PWA.
Jestem na etapie tworzenia wersji offline strony, udało mi się ogarnąć to na 2 sposoby:
- wybieram które strony mają zapisać się w cache i pobierać w braku internetu,
- przy braku internetu wyświetlanie strony o braku internetu.

Problem w tym że chcę połączyć te 2 sposoby, czyli niektóre strony dodać do cache a jeśli nie ma ich w cache to zwrócić stronę o braku internetu.

Ktoś kombinował z czymś takim i jest w stanie doradzić jak się za to zabrać?

Pozdrawiam
Go to the top of the page
+Quote Post
trueblue
post 29.04.2019, 11:04:00
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Możesz przecież sprawdzić czy w cache jest dana strona.


--------------------
Go to the top of the page
+Quote Post
gucio1
post 29.04.2019, 11:27:15
Post #3





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 30.04.2016

Ostrzeżenie: (0%)
-----


Tylko właśnie nie mogłem dojść jak bo po wejściu na dany adres przeglądarka analizuje z powiedzmy 50 plików i nie wiem jak zrobić żeby sprawdziła mi że jest np. /index.php a nie ma /index2.php.
Próbowałem pobrać adres bieżącej strony ale nie szło mi to jakoś.
Go to the top of the page
+Quote Post
trueblue
post 29.04.2019, 13:10:34
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A po co sprawdzać będąc na index.php czy w cache jest index2.php?


--------------------
Go to the top of the page
+Quote Post
gucio1
post 29.04.2019, 19:54:21
Post #5





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 30.04.2016

Ostrzeżenie: (0%)
-----


Próbowałem przechwycić linka metodami z js np:
window.location.href
document.URL

ale nie szło mi to coś.
Miałem problem z tym że kolejne sprawdzane pliki przez js jakby nadpisywały mi te zmienne i i tak wychodziło tak że danego pliku w cache nie ma.



Tutaj np.
https://googlechrome.github.io/samples/serv...m-offline-page/

Sprawdzam czy jest sieć jesli nie ma, daje userowi stronę offline.html

Za to tu podaję jakie pliki mają być wgrane do cache:
  1. self.addEventListener('install', event => {
  2. event.waitUntil(
  3. caches.open('v1').then(cache => {
  4. return cache.addAll([
  5. '/',
  6. '/helloword.php',
  7. 'css.css',
  8.  
  9. ]);
  10. }, error => {
  11. console.log(`Installation failed with error: ${error}`);
  12. })
  13. );
  14. });
  15.  
  16. self.addEventListener('activate', event => {
  17. let cacheKeepList = ['v1'];
  18.  
  19. event.waitUntil(
  20. caches.keys().then( keyList => {
  21. return Promise.all(keyList.map(function(key) {
  22. if (cacheKeepList.indexOf(key) === -1) {
  23. return caches.delete(key);
  24. }
  25. }));
  26. })
  27. );
  28. });
  29.  
  30. self.addEventListener('fetch', event => {
  31. if (event.request.method != 'GET') return;
  32.  
  33. event.respondWith(async function() {
  34. const cache = await caches.open('v1');
  35. const cachedResponse = await cache.match(event.request);
  36.  
  37. if (cachedResponse) {
  38. event.waitUntil(cache.add(event.request));
  39. return cachedResponse;
  40. }
  41.  
  42. return fetch(event.request);
  43. }());
  44. });


Jak to połączyć?
Jak napisać warunek który pobierze mi adres strony na której jestem sprawdzi w cache v1 czy adres występuje a jak nie zwróci jak w pierwszym przypadku offline.html?
Przeszukałem cały internet w poszukiwaniu takiego rozwiązania czy to w ogóle jest realne do wykonania czy muszę wybrać między tymi metodami?
Go to the top of the page
+Quote Post
denis95x
post 13.05.2019, 21:26:39
Post #6





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 21.02.2015
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


Udało ci się to jakoś ogarnąć ?
Go to the top of the page
+Quote Post
gucio1
post 20.05.2019, 09:26:32
Post #7





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 30.04.2016

Ostrzeżenie: (0%)
-----


nie udało mi się.
Odpuściłem sobie bo nie miałem czasu na to.
Jak będę miał chwilę wrócę do tematu.
Może jakaś mądra głowa coś doradzi w międzyczasie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 20:41