【问题标题】:Why does my RSS feed duplicate some entries?为什么我的 RSS 提要重复某些条目?
【发布时间】:2008-10-08 13:02:54
【问题描述】:

使用 Thunderbird 提要阅读器阅读我的 RSS 提要时,有些条目会重复。 Google Reader 没有同样的问题。

这是错误的提要: http://plcoder.net/rss.php?rss=Blog

有问题,但在哪里?

我添加了GUID,但问题仍然存在。其他的提要不像我的那样重复,所以我会在这个模块上做返工并替换这个旧的好代码。

结论:我对RSS生成器代码进行了彻底的返工,还可以。我想我使用的是一个非常旧版本的RDF

【问题讨论】:

  • 为什么在我的问题上添加了“offtopic”标签?我试图解决一个关于 RSS 规范的开发软件问题。我放了我自己的 RSS 提要,因为这个错误在我的 CMS 上。谁能解释一下为什么跑题?
  • 因为乍一看,第二次,和第三次看起来像是关于 Thunderbird 的支持问题(因此属于Super User)。在第四一瞥之后,我的解释是,您有一些软件可以为某些 RSS 提要生成 XML 内容(或者可能是某些脚本或修改 RSS 提要的拦截器软件)。无论是什么,您能否清楚说明您要做什么(但 without "Edit:"、"Update:" 或类似的 - 问题应显示为如果是今天写的)?
  • 例如,问题的第一句话可以回答问题“为什么这不是关于在 Thunderbird 中使用 RSS 提要的支持问题?”。例如,“我的程序生成一个 RSS 提要,将其部署到托管服务提供商 X,但它与 Thunderbird 的内置 RSS 阅读器无法正常工作。”(假设是这种情况)跨度>

标签: syntax rss feed


【解决方案1】:

尝试为每个项目添加<guid> 标签,并为其提供一个永久链接。即:

<item rdf:about="http://plcoder.net/?doc=2134&amp;amp;titre=mon-pc-se-la-pete">
  <link>http://plcoder.net/?doc=2134&amp;amp;titre=mon-pc-se-la-pete</link>
  <guid>http://plcoder.net/?doc=2134&amp;amp;titre=mon-pc-se-la-pete</guid>
  ...
</item>

如果没有 GUID,如果帖子中的任何内容发生更改,您的 RSS 聚合器可能会认为这是一个新帖子。使用 GUID,即使该项目的内容发生变化,您的 RSS 聚合器应该只更新帖子,而不是将其视为新项目。

【讨论】:

  • pubDate 也会影响 RSS 聚合器。具有相同guid 但不同pubDate 的项目将被视为更改并有时会重复。
【解决方案2】:

至少对于 Thunderbird 2.0.0.21,问题在于 Thunderbird 似乎不尊重 GUID 标签,但它确实尊重 频道的 pubDate-标签。因此,如果 pubDate 比上次读取的时间更近,Thunderbird 将读取 所有 个条目(似乎)。

我不知道如果频道的 pubDate-tag 缺失会发生什么...

【讨论】:

    【解决方案3】:

    我在自己的一些提要中遇到了这些问题。我从这样的条目列表开始:

    Item A
    Item B
    Item C
    

    客户端下载它们,一切都很好。然后我添加了一个新项目,因此提要显示为:

    Item D
    Item A
    Item B
    

    D 出现在阅读器中。

    但后来我决定不想要那个项目,所以列表恢复为:

    Item A
    Item B
    Item C
    

    当 Thunderbird 读到这个时,它会将 C 视为一个新项目。我使用 GUID 元素,所以我怀疑这是问题所在。我认为这与 Thunderbird 的解析器没有考虑旧元素有关。

    冗长的解决方法是“记住”您已经发布的项目以及后来被新项目推到列表末尾的项目。您基本上需要在提要中保留当前的项目列表,当您从中删除项目时,将其缩短,直到有新项目来替换它。

    【讨论】:

      【解决方案4】:

      这在Thunderbird's documentation 中有解释(在“疑难解答常见问题解答”下):

      问:为什么 Feed 消息有时会重复?

      A:内容相同但唯一 ID 不同的 Feed 消息是 未检测为重复项。有关更多详细信息,请参阅this post

      供参考的链接帖子:

      1. Atom feeds(强制)具有唯一 ID; RSS 提要(非强制性)通常具有唯一的 GUID。对于没有 GUID 的 RSS 提要,尝试 用于从 Feed 项的必填部分创建唯一 ID。
      2. 所有下载的提要消息在 feeditems.rdf 中都有一个带有此 ID 的记录,只要它们存在于发布者的 文件,具有该 ID。如果发布者删除带有 ID 的消息 从他们的文件中,24 小时后 feeditems.rdf 缓存也被清除 (关于获取消息 biff)。
      3. 如果发布者在清除 ID 后重新使用它,您将得到一个重复(如果内容相同)。这是对意图的滥用 在唯一 ID 后面,是发布者的错误。
      4. 如果发布者在清除之前重复使用 ID,并且内容不同,您将看不到新内容,因为它将被视为 重复。 Thunderbird 目前不使用 标签 发布商滥用它可能会使其难以实施。
      5. 如果您查看两个明显重复的来源 (Ctrl + U),您会注意到 Message-Id 标头。如果两个明显的重复有不同 Message-Id 值,那么无论潜在情况如何,它们都不是重复的 相同的内容。 Thunderbird 不区分重复内容。

      如果您想进行极端调试,请更改 Feeds.logging.console 首选项设置 调试或跟踪并重新启动,查看提要期间发生的情况 处理。

      如果您取消订阅提要 URL,这将清除 feeditems.rdf 缓存 对于那个提要。如果您随后重新订阅,您将获得 发布者文件中的所有当前项目也存在于您的供稿中 文件夹。

      压实对饲料加工没有影响;它只是删除标记 用于从文件中删除项目。如果您删除文件夹/将其移动到 垃圾,已退订。从 Thunderbird 29 开始,如果你拖放一个 文件夹从一个提要帐户到另一个提要帐户,订阅 被保留(但不是 feeditems)。对于非常旧的配置文件/提要帐户 (Thunderbird 17 之前),创建一个新的提要帐户和 将文件夹拖到那里(Thunderbird 29 及以上),因为新的 feeds.rdf 数据库是 创建;惩罚是一次性重复的可能性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多