Donnees cote serveur (PageCacheDataSource)
Presentation
PageCacheDataSource charge les donnees depuis un serveur distant par pages,
en les mettant en cache avec une eviction LRU. Les cellules pas encore
recuperees s'affichent sous forme de placeholders de chargement (skeleton).
Creation d'un cache de pages
Cycle de vie d'une page
- Detecter les pages necessaires — appelez
cache.needed_pages(first_row, last_row)pour trouver les pages dans la plage visible qui ne sont ni chargees ni en attente - Marquer comme en attente —
cache.mark_pending(page_num)empeche les requetes en double - Recuperer les donnees — votre application recupere les donnees depuis le serveur
- Inserer la page —
cache.insert_page(page_num, rows)stocke les donnees - Notifier la grille —
state.apply(GridCommand::NotifyPageLoaded)declenche un nouveau rendu
FetchConfig (recuperation automatique)
rs-grid-web fournit un coordinateur de recuperation integre via FetchConfig :
PageFetchRequest
Le coordinateur de recuperation effectue automatiquement :
- La verification des pages necessaires pour le viewport actuel
- Le pre-chargement de
buffer_pagespages en avance et en arriere - Le lancement d'appels
window.fetch()asynchrones - L'analyse des reponses JSON via votre closure
parse_response - La mise a jour du cache et le declenchement de
NotifyPageLoaded
Reference API
CellStatus
PageCacheDataSource retourne des valeurs CellStatus significatives :
Le renderer dessine une animation skeleton pour les cellules en Loading.
Eviction LRU
Lorsque le cache depasse max_cached_pages, les pages les moins recemment
consultees sont evincees. Acceder a nouveau a une page la deplace en fin
de file d'eviction.
Invalidation lors d'un changement de tri/filtre
Lorsque le tri ou le filtre change en mode server-side, appelez cache.clear()
pour invalider toutes les pages, puis laissez le coordinateur re-recuperer
les donnees avec les nouveaux parametres.
Etat partage
PageCacheDataSource utilise Rc<RefCell<...>> en interne — le cloner
cree une reference partagee vers le meme cache. C'est ainsi que le coordinateur
de recuperation et le modele de la grille partagent les memes donnees.