只需要ATOM、RSS中的新条目和更新条目



是否有ATOM客户端或框架能够准确地捕获提要条目一次?

如果没有,什么是最好的体系结构?

我们想要解析ATOM提要,将所有联合提要条目作为单独的记录(在数据库或文件系统中)在本地持久化。为了提高效率,可能必须定期删除这些记录。所以客户端必须独立于所说的持久性来跟踪它已经查看过的条目。

回答我自己开发的每个工作解决方案。总之,从联合提要中只捕获新的和唯一的条目的体系结构解决方案是-CACHING。

具体来说,条目必须由客户端存储,以支持"提要对我来说有什么新内容吗?"的逻辑。我相信这个"客户端"解决方案没有捷径可走。

条件GET并不是一个完整的解决方案,即使联合提要支持服务器端。例如,如果客户端客户端没有发送确切的if Modified Since时间戳,则服务器可以忽略标头,只需再次生成所有条目。根据Chris Berry,Bryon Jacob。2008年10月27日更新,

更好的方法是使用startindex参数,客户端将此值设置为上一页中返回的endIndex。使用启动索引可以确保客户端永远不会两次看到相同的响应,或错过条目,因为多个条目可能具有相同的"更新日期",但永远不会具有相同的"更新索引"。

简而言之,没有标准的服务器端解决方案可以保证"新的/唯一的"。无论如何,"唯一性"的概念本身就是客户端的问题,服务器可能不会共享相同的意见。从这个角度来看,服务器不可能满足所有的客户端。而且,无论如何,问题不在于开发更好的联合服务器,而在于开发更智能的客户端,因此,缓存是可行的。

缓存实现必须在提要轮询和存储在缓存中的条目的生存时间(ttl)、空闲时间(tti)属性之间保持不变,必须适当设置为限制缓存的性能/大小,并在轮询周期之间充分覆盖提要的最旧条目。缓存可以是常驻内存、数据库、文件系统或网络阵列。像EHCache这样的产品EHCache.org几乎提供了所需的所有功能。

提要条目可以按原样保留,但最好(最有效)的方法是识别使其唯一的内容或其组合。java或Google的协议缓冲区中的序列化等方法可以用于创建唯一的紧凑密钥,以持久保存在缓存中。在我的简单解决方案中,我甚至不需要存储条目,只需要将密钥存储为几个条目字段的MD5哈希,我通过这些字段来定义条目对于我的目的是如何唯一的。

希望这个流程图能有所帮助。

你看过Superfeeder吗?它是一个软件即服务平台,可以做到这一点:获取提要,解析它们,并在新条目可用时将其发送到端点。

最新更新