Domanda

In sostanza nel mio sito ho una barra laterale con una pila di scatole; ogni scatola può essere espansa o dall'utente. Ho bisogno di salvare lo stato di ogni scatola per l'utente attualmente connesso. Non voglio utilizzare i cookie, perché se un utente cambia browser o del computer, tutte le caselle andranno allo stato di default.

Dovrei salvare queste informazioni sul database fare una query ogni volta che i crolli di utente / espande una scatola? Come si gestisce questo? Grazie.

Modifica Che cosa succede se un utente fa clic sul pulsante di commutazione ripetutamente, come dieci volte in due secondi, solo perché lui gode di animazione le scatole? Egli farà query dieci in due secondi. Così forse la domanda dovrebbe essere:? quando dovrei salvare questi dati

È stato utile?

Soluzione

  1. Chiamare un (lato client) la funzione ogni volta "cambiato" una scatola modifiche.

  2. Mantenere due elementi di (lato client) Stato:. Quando l'ultimo aggiornamento al server è stato inviato e se un timer è stato impostato

  3. Scrivi una (lato client) la funzione "update" che invia l'aggiornamento e aggiorna lo stato a segno che l'ultimo aggiornamento è stato solo ora.

  4. Quando la funzione modificata viene chiamata: se viene impostato un timer, per poi tornare immediatamente; Se un aggiornamento non è mai stato inviato o l'ultimo aggiornamento è stato inviato più di dieci secondi fa, quindi chiamare la funzione di aggiornamento e di ritorno. In caso contrario, impostare un timer per inviare l'aggiornamento dopo dieci secondi.

  5. Il callback timer deve semplicemente cancellare il flag timer e chiamare la funzione di aggiornamento.

  6. Anche su un href="http://api.jquery.com/unload/" rel="nofollow"> scarico controllo evento

Quindi, il risultato è che si invia l'aggiornamento immediatamente tranne quando l'utente è sbattere, nel qual caso si invia solo un aggiornamento ogni secondi dieci al massimo.

Ci potrebbero essere alcuni casi in cui si perde un aggiornamento, ma questo è probabile che accada solo se l'utente stava giocando con la commutazione e poi chiuse la pagina prima che il timer ha sparato, nel qual caso probabilmente non noterà comunque.

Altri suggerimenti

Se avete bisogno di persistere queste opzioni da più computer si avrà bisogno di qualche forma di archiviazione lato server.

Questo potrebbe essere di database o file flat. La scelta dipende da quello che avete a disposizione, set di abilità, e la necessità di scala. Se avete intenzione di avere a pochi utenti, una lima piatta può essere la scelta migliore.

scroll top