Sto lavorando su un'applicazione Web usando node.js in cui sto costruendo una copia parziale del database sul lato client per ridurre il carico sul mio server. In questo momento, ho una funzione come questa (espressa come pseudocodice in stile python, ma implementata in JavaScript):
get(table_name,primary_key):
if primary_key in cache[table_name]:
return cache[table_name][primary_key]
else:
x = get_data_from_server(table_name,primary_key) # socket.io
return cache[table_name][primary_key] = x
Sebbene questo schema funzioni perfettamente per la memorizzazione nella cache di singole righe, vorrei estenderlo per supportare la creazione di tabelle impaginate ordinate secondo il tasto primary_key e caricare dati aggiuntivi usando la funzione sopra per solo la corrente e possibilmente l'adiacente pagine. Ora, non voglio mantenere l'elenco delle chiavi primarie sul server per essere recuperato ogni volta che ho bisogno di cambiare la pagina (che, per ragioni che vanno oltre lo scopo qui, sarà molto frequente), e tenerlo sul client lato, soggetto a creare / eliminare eventi in tempo reale dal server, non sembra un'idea valida, anche dopo la compressione (utilizzando intervalli, anziché singoli valori).
Qual è il modo migliore per calcolare quali elementi devono essere visualizzati su una pagina a caso, riducendo al minimo i requisiti di spazio e amp; la necessità di comunicazione con il server?