English 中文(简体)
你会如何为用户实现一个“最后查看”功能?
原标题:
  • 时间:2009-01-22 14:05:10
  •  标签:

在Stack Overflow上,个人资料页面列出了“上次见面”的属性。显然,这个属性不会在每个页面视图中更新(出于性能原因)。你会如何在一个大流量的Web应用程序中实现它?你只会在某些页面上更新它吗?或者缓存用户上次访问的时间,并在更新数据库之前等待一定的时间?或者完全不同的东西?

问题回答

在像 Stack Overflow 这样高流量的网站上,我只会在用户实际执行了某些操作时更新“上次见到”的变量。潜水并阅读问题和答案不应被计算在用户被系统“看到”的范畴内。提出问题、回答问题或者投票都应该是更新用户上次出现时间的操作。

我不会谈论实施细节,因为其他回答已经涵盖了此部分(而且我可能会说错)。

你可能会发现对于跟踪用户最近活动,“你会使用什么策略?”这篇文章会很有帮助。问题是类似的。

我会使用SESSION。并且只在会话的第一次访问中设置它。此外,每隔一小时左右重置它,以防人们将浏览器保持打开状态。在PHP中,类似于这样:

if(!isset(!_SESSION[ lastSeen ])){
 $_SESSION[ lastSeen ] = time();
 updateLastSeenInDatabaseOrSomething();
}
else{
 if($_SESSION[ lastSeen ] < time() + 2 * 60 * 60){ //2 hours
  $_SESSION[ lastSeen ] = time();
  updateLastSeenInDatabaseOrSomething();   
 }
}

有些类似,但这次使用OO,不要重复做同样的事情。

考虑使用“命令”设计模式。它将帮助您两个方面 - 回答手头的问题并实现“撤销/重做”功能。您应该维护一个根据该模式设计的命令对象列表。





相关问题
热门标签