0

是否有一个 ATOM 客户端或框架可以只捕获一次提要条目?

如果不是,最好的架构是什么?

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

4

2 回答 2

0

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

于 2013-08-06T20:50:25.207 回答
0

根据开发的每个工作解决方案回答我自己的问题。总之,从联合提要中仅捕获新的和唯一条目的架构解决方案是 - CACHING。

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

Conditional-GET 不是一个完整的解决方案,即使联合提要支持服务器端。例如,如果客户端客户端未发送确切的If-Modified-Since时间戳,则服务器可以忽略标头并简单地再次生成所有条目。每克里斯贝瑞,布赖恩雅各布。2008 年 10 月 27 日更新

...更好的方法是使用 start-index 参数,客户端将此值设置为 end-Index,在上一页中返回。使用 start-index 可确保客户端永远不会看到相同的响应两次,或错过条目,因为多个条目可能具有相同的“更新日期”,但永远不会具有相同的“更新索引”。

简而言之,没有标准的服务器端解决方案保证“新/独特”。无论如何,“唯一性”的想法是客户端问题,服务器可能不会共享相同的意见。从这个角度来看,服务器不可能满足所有客户端。而且,无论如何,问题不涉及开发更好的联合服务器,而是更智能的客户端,因此,缓存是要走的路。

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

提要条目可以按原样保留,但最好(最有效)的方法是识别使它们唯一的内容或其组合。诸如 java 中的序列化或 Google 的 Protocol Buffers 之类的方法可用于创建唯一的紧凑密钥以保留在缓存中。在我的简单解决方案中,我什至没有费心存储条目,只是将键生成为几个条目字段的 MD5 哈希,我通过这些字段定义条目对于我的目的来说是如何唯一的。

希望此流程图对您有所帮助。

于 2013-08-21T23:35:55.553 回答