Почему моя RSS-лента дублирует некоторые записи?

StackOverflow https://stackoverflow.com/questions/182615

  •  06-07-2019
  •  | 
  •  

Вопрос

при чтении моего RSS-канала с помощью Thunderbird feed Reader некоторые записи дублируются.У Google Reader нет такой же проблемы.

Вот неисправный канал http://plcoder.net/rss.php?rss=Blog

Проблема есть, но где именно?

Regards, Cédric

Обновить :Я добавляю guid, но проблема остается.Другие каналы не дублируются, как мои, поэтому я переделаю этот модуль и заменю этот старый хороший код.

заключение :Я полностью переделываю код генератора rss, и все в порядке.Я думаю, что я использовал очень старую версию RDF.

Это было полезно?

Решение

Попробуйте добавить <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 должен просто обновите сообщение, а не рассматривайте его как новый элемент.

Другие советы

По крайней мере, с Thunderbird 2.0.0.21 проблема в том, что TBird, похоже, не уважает GUID-теги, но это делает уважайте канал Публичный тег.Таким образом, если pubDate более свежий, чем при последнем чтении, TBird будет читать ВСЕ записи (кажется).

Однако я не знаю, что произошло бы, если бы отсутствовал тег pubDate канала...

Я столкнулся с этой проблемой с некоторыми из моих собственных каналов.Что произошло, так это то, что я начал со списка записей вроде этого:

Item A
Item B
Item C

Клиент их скачивает и все нормально.Затем я добавляю новый элемент, поэтому лента выглядит так:

Item D
Item A
Item B

D появляется в ридере.

Но затем я решаю, что этот предмет мне не нужен, поэтому список возвращается к следующему виду:

Item A
Item B
Item C

Когда Thunderbird прочитает это, он засчитает C как новый элемент.я являюсь используя элемент GUID, поэтому я сомневаюсь, что проблема в этом.Я думаю, что это больше связано с тем, что парсер Thunderbird не принимает во внимание старые элементы.

Сложный обходной путь — «запомнить», какие элементы вы уже опубликовали и с тех пор были вытеснены из конца списка новыми элементами.По сути, вам нужно будет хранить текущий список элементов в ленте, и когда вы удаляете элементы из него, обрезайте его, пока не появятся новые элементы для его замены.

Это объясняется в Документация Thunderbird (в разделе «Часто задаваемые вопросы по устранению неполадок»):

Вопрос:Почему сообщения ленты иногда дублируются?

А:Сообщения подачи с идентичным контентом, но разные уникальные идентификаторы не обнаруживаются как дубликаты.Видеть эта почта для получения более подробной информации.

Связанный пост для справки:

  1. Каналы Atom (обязательные) имеют уникальный идентификатор;RSS-каналы (не обязательные) обычно имеют уникальное руководство.Для RSS -каналов без GUID предпринимается попытка создать уникальный идентификатор из обязательных частей элемента подачи.
  2. Все загруженные сообщения о подаче имеют запись с этим идентификатором, хранящимся в FeedItems.rdf и существуют там, если они существуют в файле издателя, с этим идентификатором.Если издатель удаляет сообщение с идентификатором из их файла, через 24 часа кэш Feeditems.rdf также очищен (в Get Messages Biff).
  3. Если издатель повторно использует идентификатор после его очистки, вы получите дубликат (если контент идентичен).Это злоупотребление намерением уникальных идентификаторов и ошибки издателя.
  4. Если издатель повторно использует идентификатор до того, как он будет очищен, а контент отличается, вы не увидите новый контент, так как он будет рассматриваться как дубликат.Thunderbird не использует тег в настоящее время, и его неправильное использование издателей может затруднить реализацию.
  5. Если вы просмотрите источник (Ctrl-U) двух очевидных дубликатов, вы заметите заголовок Message-Id.Если два кажущихся дупса имеют разные значения идентификатора сообщений, то они не являются обманом, независимо от потенциального идентичного содержания.Tb не различает дублированный контент.

Если вы хотите экстремальную отладь, измените feeds.logging.console pref на отладку или отслеживание и перезапуск, чтобы увидеть, что происходит во время обработки кормов.

Если вы отказались от подписки на корм, это очистит кеш Feeditems.rdf для этого канала.Если вы впоследствии повторно подписываете, вы получите Dupes от всех текущих элементов в файле издателя, которые также существуют в вашей папке подачи.

Уплотнение не влияет на обработку подачи, оно просто удаляет помеченные для элементов удаления из файла.Если вы удалите папку/перемещаете ее в мусор, она отписывается.Начиная с TB29, если вы перетаскиваете/отбросите папку из одной Acount в другую учетную запись подачи, подписка сохраняется (но не кормить).Для очень старых профилей/учетных записей (Pre TB17) может быть хорошей идеей создать новую учетную запись и папки перетаскивания (TB29 и UP), как создана база данных Fresh Feeds.RDF;наказание - это возможность единоразового обмана.

У меня такая же проблема...Я переключился на ленту Google, и теперь проблема исправлена, хотя точную причину я так и не узнал.

http://feedproxy.google.com/juanformoso

В Thunderbird есть несколько ошибок с дублированием записей ленты, возможно, это только одна из них?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top