Service worker bloque génération PDF

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par passion, 25 Janvier 2019.

  1. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 587
    J'aime reçus:
    99
    Bonjour,

    Tout est dit dans le titre, je m'explique...
    Voilà, je développe sur laravel 5.5 et j'utilise "dompdf". J'ai développé une pwa.
    Le principe est standard, le service worker met en cache les pages de mon site à l'exception de certains services dont la partie PDF.
    La génération de mes pdf se font à la volée. L'utilisateur clique sur un bouton et je lui génère son pdf. Pour cela j'utilise donc "dompdf".
    Les urls générées sont du style:
    Code:
    monsite.com/interface/facture/QU5NZ4KGZD7HYURN27BDPS3KH
    L'extrait du script du service worker permettant de mettre en cache:
    Code:
    function addToCache(request, response) {
                    var copy = response.clone();
                    caches.open(version).then(function (cache) {
                        if(!request.url.endsWith('connexion') &&
                                !request.url.match(/analytics/ig) &&
                                !request.url.match(/pinterest/ig) &&
                                !request.url.match(/inscription/ig) &&
                                !request.url.match(/facture/ig) &&
                                !request.url.match(/facebook/ig)){
                            cache.put(request, copy);
                        }
                    });
                }
    C'est bien le SW qui bloque car en le désactivant, mon pdf est bien généré sans aucun soucis.
    Que je supprime ou non "!request.url.match(/facture/ig)" dans ma fonction SW, le résultat est le même... ça ne fonctionne pas. :(
    Par contre autre chose... si je renseigne directement mon url (pdf) en navigation privée ou depuis un autre navigateur, mon pdf est généré sans prob. J'en conclus que c'est bien le SW qui pose problème.
    Mais où ??
    Que je filtre ou non l'ajout du pdf en cache, ça ne fonctionne pas.

    Une idée ?
    Merci
     
    #1 passion, 25 Janvier 2019
    Dernière édition: 25 Janvier 2019
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 779
    J'aime reçus:
    239
    Pas sûr d'avoir compris, mais dans l'outil de développement de Chrome tu px voir les fichiers en cache du SW et voir si le PDF s'y est mis ?
    Ou dans l'onglet réseau tu dois voir s'il y a eu un request vers le PDF via le SW et surtout son entête HTTP et sa réponse.

    Edit: Laravel a un excellent système de logging, donc dans ton controller tu px très bien logger ce qu'il se passe.
     
    #2 spout, 25 Janvier 2019
    Dernière édition: 25 Janvier 2019
  3. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 587
    J'aime reçus:
    99
    Merci de ta réponse @spout
    Oui biensur, j'ai regardé ce qu'il se passait sur chrome, je t'ai mis une capture:
    [​IMG]

    Voilà le résultat actuel via le SW actif
    [​IMG]
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 779
    J'aime reçus:
    239
    Donc le fichier PDF est qd même mis en cache malgré la condition !request.url.match(/facture/ig), mais on voit que sa taille fait 0 (c'est bizarre l'écran gris).
    Tente de faire un console.log(request.url) pour essayer de deviner pourquoi le request.url avec facture passe la condition.
     
  5. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 587
    J'aime reçus:
    99
    Excuse-moi, j'ai dû mal m'exprimer.
    Dans l'exemple que je t'ai mis en capture, le SW ne filtre pas l'ajout de l'url de la facture. Donc il a un comportement normal. J'ai retiré le filtre dans le SW. L'url est bien ajouté en cache.
    C'est uniquement le visuel du pdf. J'ai bien un status 200 mais pas de données générées :(
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 779
    J'aime reçus:
    239
    Donc je pense que ça vient de Laravel et pas du SW.
    Je ne pourrais pas t'aider plus sans voir ce qu'il se passe en live.
     
  7. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 587
    J'aime reçus:
    99
    Je ne sais pas si ça joue mais j'ai remarqué ça.
    Via mon site avec le SW, mon pdf est en protocole 1.1:
    [​IMG]
    Accès direct au pdf en navigation privé protocole h2
    [​IMG]
    Je n'ai pas non plus d'erreurs de log en mode "debug" pfffff quelle merde !
     
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 779
    J'aime reçus:
    239
    Dans le code que t'as montré, il y a une condition pour ne pas mettre les factures dans le SW, et dans ces screenshots on voit que le la facture est "from ServiceWorker"... donc vraiment sans voir en live je /surrender, good luck ;)
     
    passion apprécie ceci.
  9. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 587
    J'aime reçus:
    99
    ok merci @spout pour le temps que tu m'as accordé ;)
    T'es un chef.
    oui, j'ai remis le filtre sur la partie facture dans le sw et au visu dans le cache chrome, les urls facture ne sont pas présentes donc de ce côté, c'est un comportement normal.
     
  10. passion
    passion WRInaute accro
    Inscrit:
    6 Janvier 2006
    Messages:
    3 587
    J'aime reçus:
    99
    Bon, j'ai trouvé la cause mais pas trouvé la solution en dev donc pour faire au plus simple, j'ai contourné le problème ;)
    Si ça peut t'aider @spout
    Dans les captures que j'ai mis plus haut, j'ai eu un début de pistes...
    Comme mon serveur est configuré en http/2 et bien, il sert du http/2 logique. Mais lorsque le SW s'active pour le pdf, il va chercher dans le cache donc passe en http/1 et là... conflit de protocle !
    Il ne peut pas matcher !
    Alors pourquoi le SW délivre du http1 uniquement pour le pdf pfffffffff j'en sais rien et m'en fous ! J'ai assez perdu de temps avec ça.
    Alors j'ai trouvé une alternative. Au lieu d'ouvrir mon pdf en target="_blank", j'ai mis un lien html5.
    Code:
    <a href="" download>mon PDF</a>
    Voilà, c'est une bidouille mais ça marche ;)
     
    spout apprécie ceci.
  11. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 779
    J'aime reçus:
    239
    Merci pour le retour d'info, ça pourrait arriver à tous.
     
Chargement...
Similar Threads - Service worker bloque Forum Date
Installation WebApp : prob service worker Développement d'un site Web ou d'une appli mobile 26 Février 2019
Utilisation d'un service... 1700€ plus tard inquiétude... Netlinking, backlinks, liens et redirections 13 Juillet 2019
Avis SEO site services à domicile Demandes d'avis et de conseils sur vos sites 8 Juillet 2019
Nouveau service de snap .fr => DomExpire Noms de domaine et référencement 20 Juin 2019
Comment facturer mes services Droit du web (juridique, fiscalité...) 26 Mai 2019
Quel service pour traduction auto ? e-commerce 13 Mars 2019
Adsense et RSI : Autres prestations ou Prestations de service commerciales ? Droit du web (juridique, fiscalité...) 18 Janvier 2019
blogs pour site/produits/services Débuter en référencement 25 Octobre 2018
Service de médiation pour site ecommerce Droit du web (juridique, fiscalité...) 18 Septembre 2018
la console de service Francesurf.net Débuter en référencement 17 Août 2018
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice