Как стать автором
Обновить

guid как средство от дубликатов в RSS

Время на прочтение1 мин
Количество просмотров4.2K
Читающие Хабр через RSS наверняка замечали, что иногда один и тот же топик дублируется в ленте. Это происходит, когда пост перемещается из одного блога в другой. Меняется ссылка, и RSS-ридеры воспринимают её как новый топик. Это поведение легко исправить.

Уникальность поста в RSS определяется по тегу guid. Он может содержать любую строку, однозначно идентифицирующую сообщение. Часто в качестве подобной строки используется постоянная ссылка на пост. В таком случае тегу guid обычно ставят атрибут isPermalink="true", хотя его можно опустить, т. к. это значение по умолчанию. При этом использовать ссылку в качестве guid совсем не обязательно, ведь для этого в стандарте RSS предусмотрен тег link. В большинстве RSS-лент содержимое тегов guid и link дублируется:

<guid isPermaLink="true">http://habrahabr.ru/blog/google/38273.html</guid>
<link>http://habrahabr.ru/blog/google/38273.html</link>


Когда пост переносится в другой блог, меняется не только link, но и guid, что сбивает с толку ридеров. Чтобы избежать этой ситуации, достаточно использовать в качестве guid не ссылку, а действительно уникальную строку, которая не меняется ни при каких обстоятельствах. Лучше всего для этой цели подходит id поста во внутренней базе данных. При этом необходимо выставить атрибут isPermaLink="false". В таком случае ридеры будут использовать guid для определения уникальности поста, а link — в качестве ссылки:

<guid isPermaLink="false">1234567890</guid>
<link>http://habrahabr.ru/blog/google/38273.html</link>
Теги:
Хабы:
+29
Комментарии24

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн