【问题标题】:selective node update to cached xml feed and/or feedreader对缓存的 xml 提要和/或提要阅读器的选择性节点更新
【发布时间】:2010-08-13 10:28:09
【问题描述】:

rsscache,他们提供了一种缓存您网站供稿的机制。他们声称,如果将新节点添加到您的提要中,而不是刷新和重新填充整个缓存(对于当前用户,他们可能会为新用户这样做),他们只会将新节点发送到当前用户的新闻阅读器和阅读器将它添加到其他节点中,它会在不完全刷新的情况下更新,节省带宽。 (见第 6 步)

这是正确的吗,我可以想象缓存添加了一个节点,而不是刷新和更新,但我不明白这种情况如何在访问者的 feedreader 中工作。

如果是这样,如何使用 php 实现(选择性更新缓存和/或读取器)?

是否可以扩展这种选择性节点更新机制以排除错误节点,例如;

error:node not found

因此,当源自特定服务(例如 twitter)的混搭提要(生命流)中的随机节点因服务脱机而消失时,这些节点不会被脱机错误替换,但它们之前的状态仍然存在?

【问题讨论】:

    标签: php xml caching feed


    【解决方案1】:

    通常,提要阅读器会保留提要中包含的所有项目。或者让您配置最长期限或要保留的项目数。

    Rsscache.com 可能存储提要的项目以及哪些客户已收到哪些项目是数据库。有了这些信息,就可以动态创建只包含尚未返回的项目的提要。

    因此,当您开始通过 rsscache.com 阅读提要时,所有项目都会返回,但在以后的请求中只会返回新项目。

    【讨论】:

      【解决方案2】:

      这是一种可行的方法:

      保留提要的本地缓存,并根据此缓存版本的日期执行条件 GET(使用 If-Modified-Since 标头)(如果网站管理员的服务器支持条件 GET,则导致网站管理员的带宽减少)。获得提要后,请检查其中的每个项目以查看它是否已存在于您的数据库中。如果它已经存在,请跳过它,如果不存在则添加它,包括时间戳以反映您添加它的时间,并且您可能还想删除提要的“死”项。

      现在您需要跟踪上次有人在服务器上查询特定提要的时间。如果这是第一次有人请求提要,那么只需返回您为该提要存储在数据库中的所有项目,并添加一条包含用户(ip?)、提要和当前时间的记录。如果他以前曾去过该提要,则选择该提要的所有记录,这些记录是在他之前的查询之后添加的(然后更新该特定用户的 last_query 时间并将提要更新为当前时间)。如果没有新项目,只需返回一个空提要。

      【讨论】:

        猜你喜欢
        • 2013-02-15
        • 1970-01-01
        • 2010-12-30
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多