Comment écrire « Dernière visite » logique comme ça sur Stack Overflow

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

  •  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.

Était-ce utile?

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) -

http://www.osqa.net/

Et oui, il ressemble beaucoup à StackOverflow (pour le moins).

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