2010-10-21 31 views
0

Fondamentalement dans mon site Web j'ai une barre latérale avec une pile de boîtes; chaque boîte peut être réduite ou étendue par l'utilisateur. J'ai besoin de sauvegarder l'état de chaque boîte pour l'utilisateur actuellement connecté. Je ne veux pas utiliser de cookies parce que si un utilisateur change de navigateur ou d'ordinateur, toutes les boîtes passeront au statut par défaut.La meilleure façon d'enregistrer l'état de l'interface Web dynamique

Devrais-je enregistrer ces informations dans la base de données en effectuant une requête à chaque fois que l'utilisateur réduit/agrandit une boîte? Comment voulez-vous gérer cela? Merci. Que se passe-t-il si un utilisateur clique sur le bouton à bascule à plusieurs reprises, comme dix fois en deux secondes, simplement parce qu'il aime l'animation des boîtes? Il fera dix requêtes en deux secondes. Alors peut-être la question devrait être: quand devrais-je enregistrer ces données?

Répondre

1
  1. Appelez une fonction "modifiée" (côté client) à chaque changement de boîte.

  2. Conserver deux éléments d'état (côté client): l'heure à laquelle la dernière mise à jour du serveur a été envoyée et si un temporisateur a été défini.

  3. Ecrivez une fonction "update" (côté client) qui envoie la mise à jour et met à jour l'état pour marquer que la dernière mise à jour était juste maintenant. Lorsque la fonction modifiée est appelée: si une temporisation est définie, elle revient immédiatement; Si une mise à jour n'a jamais été envoyée ou si la dernière mise à jour a été envoyée il y a plus de dix secondes, appelez la fonction de mise à jour et revenez. Sinon, réglez une minuterie pour envoyer la mise à jour après dix secondes.

  4. Le rappel de temporisateur devrait simplement effacer l'indicateur de temporisateur et appeler la fonction de mise à jour.

  5. Également sur un événement unload, vérifiez si un temporisateur a été réglé et, s'il l'était, effacez le temporisateur et appelez la fonction de rappel du temporisateur.

Ainsi, le résultat est que vous envoyez la mise à jour immédiatement sauf lorsque l'utilisateur est claquait, auquel cas vous envoyez seulement une mise à jour toutes les dix secondes au plus.

Il se peut que vous perdiez une mise à jour, mais cela ne se produira probablement que si l'utilisateur jouait avec le basculement, puis ferma la page avant le déclenchement du temporisateur, auquel cas il ne le remarquerait probablement pas .

1

Si vous devez conserver ces options à partir de plusieurs ordinateurs, vous aurez besoin d'une forme de stockage côté serveur.

Il peut s'agir d'une base de données ou d'un fichier plat. Le choix dépend de ce que vous avez, de l'ensemble de compétences et de la nécessité d'évoluer. Si vous ne disposez que de quelques utilisateurs, un fichier plat peut être votre meilleur choix.

+0

Dustin Laine: merci, j'ai édité ma question. – pt2ph8