为什么我的RSS feed会复制一些条目?

时间:2008-10-08 13:02:54

标签: syntax rss feed

使用Thunderbird供稿阅读器阅读我的RSS源时,会复制一些条目。谷歌阅读器没有同样的问题。

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

有问题,但在哪里?

此致 塞德里克

更新:我添加了guid,但问题仍然存在。 Anothers feed不像我的那样重复,所以我将重新使用这个模块并替换这个旧的好代码。

结论:我完全重新编写了rss生成器代码,没关系。我想我使用的是旧版本的RDF。

6 个答案:

答案 0 :(得分:7)

尝试为每个项目添加<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聚合器也应更新帖子,而不是将其视为新项目。

答案 1 :(得分:2)

至少在Thunderbird 2.0.0.21中,问题是TBird似乎不尊重GUID标签,但它 尊重频道的 pubDate标签。因此,如果pubDate比上次阅读更新,TBird将读取所有条目(似乎)。

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

答案 2 :(得分:1)

我在使用自己的一些Feed时遇到过这个问题。发生的事情是我从这样的条目列表开始:

Item A
Item B
Item C

客户端下载它们,一切都很好。然后我添加一个新项目,所以Feed读作:

Item D
Item A
Item B

D出现在读者身上。

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

Item A
Item B
Item C

当Thunderbird读取此内容时,它会将C计为新项目。我 am 使用GUID元素,所以我怀疑这是问题所在。我认为这与Thunderbird的解析器有关,而不考虑旧的元素。

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

答案 3 :(得分:1)

Thunderbird documentation(在“疑难解答常见问题解答”下)对此进行了解释:

  

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

     

答:Feed内容相同但唯一ID不同的邮件是   没有被检测为重复。有关详细信息,请参阅this post

链接帖子供参考:

  
      
  1. Atom提要(必填)具有唯一ID; Rss feed(非强制性)通常具有唯一的guid。对于没有guid的Rss feed,尝试   用于从Feed项的强制部分创建唯一ID。
  2.   
  3. 所有下载的Feed消息都有一个记录,该id存储在feeditems.rdf中,只要它们存在于发布者的存在中就存在   文件,带有该ID。如果发布者删除了带有id的邮件   从他们的文件中,24小时后,feeditems.rdf缓存也被清除   (关于获取消息biff)。
  4.   
  5. 如果发布商在清除后重新使用了ID,您将获得一个骗局(如果内容相同)。这是滥用意图   独特的ID背后和出版商的错误。
  6.   
  7. 如果发布商在清除ID之前重新使用该ID,并且内容不同,则您将看不到新内容,因为它将被视为   重复。 Thunderbird目前不使用该标签   它被出版商滥用可能会使其难以实施。
  8.   
  9. 如果您查看两个明显欺骗的源(Ctrl-U),您将注意到Message-Id标头。如果两个明显的欺骗有不同   Message-Id值,然后它们不是dupe而不管潜力   相同的内容。 Tb不区分重复内容。
  10.         

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

         

    如果您取消订阅Feed网址,则会清除feeditems.rdf缓存   对于那个饲料。如果您随后重新订阅,您将获得欺骗   发布商文件中也存在于Feed中的所有当前项目   文件夹中。

         

    压实对Feed处理没有影响,只是删除了标记   从文件中删除项目。如果删除文件夹/将其移至   垃圾,它是取消订阅。从Tb29开始,如果你拖放一个   文件夹从一个Feed帐号到另一个Feed帐户,即订阅   保留(但不是feeditems)。适用于非常旧的个人资料/ Feed帐户   (在Tb17之前),创建一个新的Feed帐户并不是一个好主意   拖动文件夹(Tb29及以上),作为一个新鲜的feeds.rdf数据库   创建;罚款是一次欺骗的可能性。

答案 4 :(得分:-1)

我遇到了同样的问题......我切换到Google的Feed并且现在已修复,但从来不知道确切的原因

http://feedproxy.google.com/juanformoso

答案 5 :(得分:-1)

Thunderbird有一些错误的重复订阅源条目,也许它只是其中一个出现?