Les travailleurs de service peuvent mettre en cache/précache la réponse d'une requête donnée. Disons que vous avez Library
Base de données MySQL sur le serveur, contenant des tables telles que Books
y Authors
. Pour le mettre en cache à l'aide d'un travailleur de service, vous pouvez créer un service qui renvoie les livres et les auteurs au format JSON, par ex. GET https://you-api.com/library
. Ensuite, en fonction de votre stratégie de mise en cache, vous pouvez soit :
- Ajouter
https://you-api.com/library
URL vers la liste des ressources mises en précachette utilisées par le travailleur de service. install
étape, ou
- Manipuler le travailleur du service
fetch
correspondant à l'événement https://you-api.com/library
demande.
Dans les deux cas, vous pouvez stocker le résultat dans Cache
o IndexedDB
. Je préférerais IndexedDB
Cependant, nous devons être en mesure de travailler facilement avec ces données par la suite. Avec IndexedDB, vous pouvez créer plusieurs magasins si vous décidez de stocker séparément les enregistrements de vos tables MySQL.
OK, nous avons créé et alimenté notre base de données locale. Et maintenant ?
Vous pouvez soit :
- Requête locale
Library
directement à partir de votre page, ou
- Continuer à utiliser les travailleurs sociaux
Concentrons-nous sur la deuxième option. Votre application utilise très probablement certains services pour récupérer des données dans la base de données distante. Disons que https://you-api.com/library/book/<id>
est utilisé pour récupérer un livre par son identifiant. Pourquoi ne pas profiter du fait que nous avons des livres en cache localement ? L'approche la plus directe serait la suivante :
- Intercepter la requête de récupération correspondant à l'URL ci-dessus en utilisant le travailleur de service ci-dessus.
- Lire le nom de la table et l'identifiant du livre à partir de l'URL de la demande.
- Requête locale
Library
pour ce livre spécifique et de le renvoyer dans le même format que le service à distance
Quelques considérations supplémentaires et cas particuliers :
- Gérer le cas où la base de données locale n'est pas présente
- Décider quand et comment la base de données est mise à jour
- Gérer les changements de schéma
- En option, utilisez la stratégie du réseau en premier. Tenter d'abord de récupérer les enregistrements de la base de données à partir du service distant et revenir à la version en cache lorsque le réseau n'est pas disponible.