Comment écrire « Dernière visite » logique comme ça sur Stack Overflow
-
02-10-2019 - |
Question
Je travaille sur une application qui a la même logique que SO en ce qui concerne lorsque l'utilisateur a été vu la dernière fois. J'ai rencontré un problème conceptuel que j'espère certains d'entre vous l'aide de Guru peut me avec.
Toute l'activité est enregistrée dans une table ActivityLog dans la base de données
Lorsqu'un utilisateur connecté frappe le site et une nouvelle session est créée, je mets à jour le journal d'activité avec l'ID utilisateur et quelques informations très générique. Même chose quand ils créent un nouveau record, mettre à jour leur profil, etc.
Le problème que je vais avoir est la suivante.
Si j'utilise l'élément d'activité la plus récente, puis accédez à ma page de compte personnel, la « Dernière visite » apparaît comme ya 1 seconde parce que je viens de frapper le db au démarrage de la session ... Ce n'est pas bon parce que je veux pour voir ce que je « dernier » là-bas, pas quand je suis là « maintenant ».
Cependant, si j'utilise Skip(1).Take(1)
pour obtenir le deuxième enregistrement dans la base de données, puis quand quelqu'un regarde ailleurs mon profil alors que je suis « juste » signé ... ils verront que je le dis il y a une semaine et pas aujourd'hui.
Quel genre de logique utiliseriez-vous pour avoir votre gâteau et le manger aussi?
J'utilise ASP.NET MVC2 et LINQ to SQL, mais je pense que cette question est plus agnostique linguistique.
La solution
On dirait que vous pouvez simplement montrer le deuxième enregistrement le plus récent pour l'utilisateur actuel, et pour tous les autres utilisateurs montrent le plus récent.
Autres conseils
Qu'est-ce que je ferais (simplement pour éviter une grande boucle logique) serait d'ajouter deux champs. current_seen
et last_seen
. Le mouvement current_seen
connexion à last_seen
et ensemble current_seen
à la timestampe actuelle. Affichez ensuite last_seen
comme « la dernière fois le XX / XX / XXX ».
Un endroit à regarder est le code source à OSQA (q & un système open source) -
Et oui, il ressemble beaucoup à StackOverflow (pour le moins).