La meilleure façon d'enregistrer l'état de l'interface web dynamique

StackOverflow https://stackoverflow.com/questions/3992242

  •  10-10-2019
  •  | 
  •  

Question

En gros, dans mon site, j'ai une barre latérale avec une pile de boîtes; chaque boîte peut être réduit ou développé par l'utilisateur. Je dois enregistrer le statut de chaque case pour l'utilisateur actuellement connecté. Je ne veux pas utiliser les cookies parce que si un utilisateur change navigateur ou un ordinateur, toutes les cases iront à l'état par défaut.

Devrais-je enregistrer ces informations sur la base de données faisant une requête à chaque fois que les effondrements de l'utilisateur / une boîte étend? Comment voulez-vous gérer cela? Merci.

Modifier Que faire si un utilisateur clique sur le bouton à bascule à plusieurs reprises, comme dix fois en deux secondes, juste 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 devrait-je enregistrer ces données

Était-ce utile?

La solution

  1. Appeler un (côté client) fonction "changé" à chaque fois qu'un changement de boîte.

  2. Gardez deux éléments de (côté client) état:. Moment de la dernière mise à jour du serveur a été envoyé et si une minuterie a été réglée

  3. Ecrire un (côté client) fonction « mise à jour » qui envoie la mise à jour et met à jour l'état à la marque que la dernière mise à jour a été tout à l'heure.

  4. Lorsque la fonction modifiée est appelée: si une minuterie est réglée, puis revenez immédiatement; si une mise à jour n'a jamais été envoyé ou la dernière mise à jour a été envoyé il y a plus de dix secondes, puis appeler la fonction de mise à jour et retour. Sinon, régler une minuterie pour envoyer la mise à jour au bout de dix secondes.

  5. Le rappel de la minuterie doit simplement effacer l'indicateur de minuterie et appeler la fonction de mise à jour.

  6. également sur un événement unload vérifier si une minuterie a été réglée et si elle était alors effacer la minuterie et appeler la fonction de rappel de la minuterie.

Le résultat est donc que vous envoyez la mise à jour immédiatement sauf lorsque l'utilisateur est claquant, auquel cas vous envoyez seulement une mise à jour toutes les dix secondes au maximum.

Il pourrait y avoir certains cas où vous perdez une mise à jour, mais cela risque de se produire que si l'utilisateur joue avec le basculement, puis fermé la page avant que la minuterie a tiré, dans ce cas, il ne sera probablement pas remarqué de toute façon.

Autres conseils

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

Cela pourrait être la base de données ou d'un fichier plat. Le choix dépend de ce dont vous disposez, compétences, et la nécessité d'échelle. Si vous allez avoir quelques utilisateurs, un fichier plat peut être votre meilleur choix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top