Projet

Général

Profil

Development #24405

pwa : fournir un service worker

Ajouté par Frédéric Péters il y a presque 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
10 juin 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Basique et générique.


Fichiers


Demandes liées

Lié à Combo - Development #24400: pwa : possibilité d'utiliser un template pour le manifest.jsonFermé10 juin 2018

Actions
Lié à Publik - Development #25068: PWA standard PublikNouveau05 juillet 2018

Actions

Révisions associées

Révision dd7c1938 (diff)
Ajouté par Frédéric Péters il y a presque 6 ans

pwa: add generic service worker (#24405)

Historique

#3

Mis à jour par Anonyme il y a presque 6 ans

  • Lié à Development #24400: pwa : possibilité d'utiliser un template pour le manifest.json ajouté
#4

Mis à jour par Anonyme il y a presque 6 ans

(n.b. : appliquer sur combo ce patch https://dev.entrouvert.org/issues/24400 avant celui de ce ticket-ci, sinon ça ne passe pas)

Passer par une vue django pour servir un fichier js statique me pose question, mais ici je vois qu'on a besoin d'un numéro de version apporté par la librairie gadjo de tags de template.
On a besoin d'un numéro de version pour versionner le cache du Service Worker, mais start_timestamp va renvoyer une version différent à chaque requête, n'est-ce pas ? Est-ce qu'il ne vaut pas mieux de vraiment avoir un numéro de version venant du package combo lui-même ? À chaque release combo, on aura un service worker différent installé dans les navigos qui consulteront les PWA.

Si on se dirige vers le service d'un fichier "quasi-statique" par Django et pas Nginx (dont c'est plus le boulot), la politique de cache des navigateurs pour les service-workers n'est pas bien claire encore : 24h ? plus ? En attendant dans ce ticket, peut-on rajouter un header "cache-control" pour 24h dans le rendu de l'url.

#5

Mis à jour par Frédéric Péters il y a presque 6 ans

mais start_timestamp va renvoyer une version différent à chaque requête, n'est-ce pas ?

Non, ça reprend le timestamp du démarrage du service. C'est également ce qu'on utilise pour "gérer" le cache des fichiers statiques dans Gadjo.

Est-ce qu'il ne vaut pas mieux de vraiment avoir un numéro de version venant du package combo lui-même ?

Ça passerait à côté de changements amenés via publik-base-theme. Aussi, s'il faut faire évoluer ce numéro de version, il doit devenir plus dynamique encore, pour par exemple inclure les changements à la page /offline/ éventuelle.

Si on se dirige vers le service d'un fichier "quasi-statique" par Django et pas Nginx (dont c'est plus le boulot), la politique de cache des navigateurs pour les service-workers n'est pas bien claire encore : 24h ? plus ? En attendant dans ce ticket, peut-on rajouter un header "cache-control" pour 24h dans le rendu de l'url.

On ne demande aujourd'hui pas à nginx de poser cet entête (ex: https://portail-citoyen.guichet-recette.grandlyon.com/static/grandlyon-gnm/service-worker.js); ça me va plutôt bien de ne pas tenter d'optimisation sans mesure.

#6

Mis à jour par Anonyme il y a presque 6 ans

D'accord. Autre chose, par rapport à l'ancien script, je me demande pourquoi tu supprimes "offlineImage" ? Cette fonctionnalité peu être utile dans tous les cas non ?

#7

Mis à jour par Frédéric Péters il y a presque 6 ans

Elle n'était pas utilisée.

#8

Mis à jour par Anonyme il y a presque 6 ans

Avec ta réponse sur offlineImage, je donne mon Ack, et si possible plus tard poser un ticket d'évolution pour la remise en place de ce SVG.

Frédéric Péters a écrit :

On ne demande aujourd'hui pas à nginx de poser cet entête (ex: https://portail-citoyen.guichet-recette.grandlyon.com/static/grandlyon-gnm/service-worker.js); ça me va plutôt bien de ne pas tenter d'optimisation sans mesure.

Je suis d'accord mes remarques sont prématurées, je voulais noter qu'avec une généralisation de la PWA, on aurait 3 requêtes à Combo pour afficher une page d'un portail, là où il n'y avait qu'une requête : la page HTML, le manifest.json et le service-worker.
Dans le cas où ça poserait problème de charge à l'avenir, on pourra trouver des solutions type : compilation des templates périodique + mise en place dans un répertoire servi par Nginx directement.

#9

Mis à jour par Frédéric Péters il y a presque 6 ans

En vrai pour une page il y a déjà plus de requêtes que ça, pour l'affichage ajax des cellules, et ce sont là des requêtes qui coûtent en base de données.

#10

Mis à jour par Anonyme il y a presque 6 ans

Frédéric Péters a écrit :

En vrai pour une page il y a déjà plus de requêtes que ça, pour l'affichage ajax des cellules, et ce sont là des requêtes qui coûtent en base de données.

Oui.
Par contre, je viens de remarque dans le js, on peut peut-être enlever le else ligne 114 qui n'est jamais utile avec if (true || ...)

#11

Mis à jour par Frédéric Péters il y a presque 6 ans

  • Statut changé de En cours à Résolu (à déployer)

Yep, lignes retirées et commit poussé.

commit dd7c1938780fb32ed72be54e95d09d507401e0f5
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sun Jun 10 13:30:22 2018 +0200

    pwa: add generic service worker (#24405)
#12

Mis à jour par Frédéric Péters il y a presque 6 ans

#13

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF