我目前正在研究基于Web的RSS聚合系统的设计和实现,目的是推荐算法的使用和评估。
该系统将需要一个相对交互式的基于Web的UI(因此,我对使用GWT感兴趣)和某种形式的数据持久性来存储RSS提要详细信息和复杂的用户配置文件,这些信息将用于提供建议(我已经在Gilead上进行过研究) 。
我的问题来自更新用户配置文件。配置文件将通过用户与网站的交互进行更新,这意味着每秒可能存在许多回调,这些回调将用于更新用户配置文件。用户配置文件必须存储在某种形式的数据库中,但是每次进行回调时访问它都是非常低效的。
据我所知,我的GWT应用程序将部署在Web服务器上,并且其中将包含可运行的Java类。但是,这意味着创建的任何对象将仅在该类使用的生存期内存在。
是否有任何方法可以将这些数据保存在内存中,可以通过GWT战争中的Java类有效地访问和修改,并且可以定期并通过显式调用对数据库进行写操作。
最佳答案
绝对。 GWT遵循与Java相同的垃圾回收规则(从技术上讲,但足以满足我们的目的)。这意味着您可以创建交互记录对象,并将它们保存在内存中就像将它们添加到列表/所需的任何其他数据结构中一样简单。
您可以像桌面应用程序一样使用GWT。一个简单的示例是将数据保留为单例,并定期将其发送到服务器。就像在桌面应用程序中所期望的那样,单例的寿命是从代码加载时间到窗口卸载时间。
您还可以挂接页面的unload事件,以在关闭应用程序时将绝对的最新信息发送回服务器。