Deux questions pour deux scripts javascript.

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ortolojf, 29 Août 2022.

  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 679
    J'aime reçus:
    39
    Bonjour

    Pour ma PWA ;)

    J'ai deux questions par rapport au choix de scripts javascript.

    1er script : cache sinon fetch -> cache

    2ème script : cache sinon fetch.

    J'envisage soit les deux scripts suivants ( pour 1 et 2 ), soit deux autres scripts plus simples.

    Voici les scripts et les questions :


    Code:
    // StaleWhileRevalidate.js
    self.addEventListener('fetch', function(event) {
      event.respondWith(
        caches.open('mysite-dynamic').then(function(cache) {
          return cache.match(event.request).then(function(response) {
            var fetchPromise = fetch(event.request).then(function(networkResponse) {
              cache.put(event.request, networkResponse.clone());
              return networkResponse;
            })
            return response || fetchPromise;
          })
        })
      );
    });
    
    
    Le script StaleWhileRevalidate.js fait-il le fetch même si le cache répond ?


    Code:
    // CacheNetworkRace.js
    // Promise.race is no good to us because it rejects if
    // a promise rejects before fulfilling. Let's make a proper
    // race function:
    function promiseAny(promises) {
      return new Promise((resolve, reject) => {
        // make sure promises are all promises
        promises = promises.map(p => Promise.resolve(p));
        // resolve this promise as soon as one resolves
        promises.forEach(p => p.then(resolve));
        // reject if all promises reject
        promises.reduce((a, b) => a.catch(() => b))
          .catch(() => reject(Error("All failed")));
      });
    };
    self.addEventListener('fetch', function(event) {
      event.respondWith(
        promiseAny([
          caches.match(event.request),
          fetch(event.request)
        ])
      );
    });
    
    

    Le script CacheNetworkRace.js fait-il le fetch même si le cache a répondu ?

    Merci beaucoup.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 207
    J'aime reçus:
    365
    Les 2 questions peuvent être répondues via F12 (onglet Application) qui permet d'activer / désactiver / effacer le cache.
     
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 679
    J'aime reçus:
    39
    Bonjour spout

    Merci beaucoup pour ton avis.

    Evidemment ce sont des promises.

    promiseAny ( 2ème script ), se résout si l'une au moins des promises est résolue.

    Pour le 1er script, la deuxième promise ne se déclenche-t-elle que si la première promise
    échoue ?

    Ce n'est pas avec des cas particuliers qu'il est possible de résoudre un cas général.

    Merci beaucoup.
     
    #3 ortolojf, 29 Août 2022
    Dernière édition: 29 Août 2022
  4. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 679
    J'aime reçus:
    39
    Excusez-moi.

    Pour le deuxième script, la promiseAny n'a pas besoin d'évaluer son deuxième argument ( fetch ) si le cache répond.

    Pour le premier script, la promise du cache.match() n'exécute le code après le then que si le cache répond ?

    Dans ces conditions, à quoi bon ( après le then ) mettre le fetch en cache ?

    Le premier script est-il valide ?

    Merci beaucoup de vos réponses.
     
  5. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 679
    J'aime reçus:
    39
    Je vous demande pardon.

    Le deuxième script ( promiseAny ), déclenche le plus rapide des deux ( fetch ou cache ).

    Mais quid du premier script : Le fetch se déclenche-t-il si le cache échoue ?

    Le fetch est dans le then().

    Il y a la promise du fetch, et le then() rend != false si le fetch est valide, même si le cache rend false.

    Donc correct ?

    Je vous prie de me pardonner de mes faibles connaissances en javascript .

    Bien à vous.

    Amicalement.
     
Chargement...
Similar Threads - questions scripts javascript Forum Date
Questions concernant des scripts php Administration d'un site Web 2 Mars 2005
Audit SEO : questions techniques sur robots.txt Demandes d'avis et de conseils sur vos sites 19 Septembre 2022
SEO questions Référencement Google 9 Juin 2022
Questions SEO technique (pagination) Netlinking, backlinks, liens et redirections 1 Mai 2022
Questions URL canonique, crawl et indexation Débuter en référencement 25 Mars 2022
Questions Keyword dans domaine URL Demandes d'avis et de conseils sur vos sites 10 Décembre 2021
Questions réponses sur Axeptio (Consent Management Platform) Administration d'un site Web 30 Mars 2021
Questions-réponses sur AppConsent, la CMP de SFBX Administration d'un site Web 30 Mars 2021
Questions-réponses sur la CMP ConsentManager Administration d'un site Web 30 Mars 2021
Sirdata répond à vos questions sur sa CMP Administration d'un site Web 30 Mars 2021
Cookies : les nouvelles règles de 2021 : vos questions Administration d'un site Web 10 Mars 2021
[nom de domaine] Questions référencement Débuter en référencement 18 Décembre 2020
Questions sur la Webmaster Tools (Bing) Référencement Bing 28 Juin 2020
WordPress Questions de SEO pour les images et duplicate content Débuter en référencement 11 Avril 2020
Juste quelques questions Débuter en référencement 3 Janvier 2020
Migration site PHP vers Gatsby : quelques questions Problèmes de référencement spécifiques à vos sites 22 Août 2019
2 questions d'un néophyte Débuter en référencement 15 Juillet 2019
Questions à propos d'AMP et du carrousel Référencement Google 27 Mai 2019
Audit RM Tech : Questions sur les recommandations Débuter en référencement 1 Avril 2019
Profil Facebook transformé en page : questions SVP Facebook 18 Février 2019