Oui elles peuvent changer souvent. Ce ne sont pas des données de référence. Et puis on parle de client léger avec un serveur REST.
Pour le coup je préfère beaucoup ma solution avec des piles puisque ce sont des petites recherches que de faire grossir le navigateur.
Mais ça me fait penser à la mise en œuvre de datatable par la librairie wrapper pour R Shiny nommé DT. Qui cache tout mais côté serveur, mais au moins ne fait pas grossir le client léger. J’en parle pour continuer la discussion mais ça ne répond pas à ma question présente, par contre pour une table maitre je ne dis pas.
En fait j’avais mis du temps à comprendre. Datatable est un composant uniquement client avec des API ouvert aux paginations, recherche etc… mais dont j’ai découvert qu’il fallait tout se coltiner côté Flask contrairement à son wrapper DT.
Tandis que pour DT, c’est-à-dire un wrapper Datatable + une réécriture complète côté serveur R Shiny, on peut écrire une requête SQL + R qui ramène des milliers de ligne sans paginations(*), et c’est DT côté serveur qui pagine ce gros cache qui le file à R Shiny, qui le file à nodejs, qui est le moteur de R Shiny, qui le file à Datatable côté client le tout en paginé.
Alors qu’en général, et c’est ce que j’ai fait en Flask, il faut créer une API avec des paramètres de pagination, et créer une requête SQL faite pour découper les données par page. Ou utiliser un ORM comme SqlAlchemy. J’utilise l’un ou l’autre selon mes besoins.
Quitte à tout cacher je préfère la solution DT où on cache côté serveur.
Mais bon on s’éloigne du sujet des requêtes asynchrones puisqu’en plus Datatable est synchrone. Mais c’est intéressant de discuter de toutes les mises en œuvre possible selon les besoins.
(*) Comme R a été conçu au départ davantage pour les scientifiques que les informaticiens je suppose qu’ils voulaient leur éviter, dans DT pour R Shiny, les affres des paginations à la main en SQL ou de se plonger dans des ORM comme SqlAlchemy.