¿Por qué mi feed RSS duplica algunas entradas?
Pregunta
cuando leo mi feed RSS con el lector de feeds Thunderbird, algunas entradas se duplican. Google Reader no tiene el mismo problema.
Aquí está la alimentación defectuosa http://plcoder.net/rss.php?rss=Blog
Hay un problema, pero ¿dónde?
Saludos, C & # 233; dric
actualización: agrego guid pero el problema persiste. Otros feeds no se duplican como el mío, por lo que volveré a trabajar en este módulo y reemplazaré este viejo código bueno.
conclusión: vuelvo a trabajar completamente el código del generador rss, y está bien. Creo que estaba usando una versión muy antigua de RDF.
Solución
Intente agregar una etiqueta <guid>
a cada elemento, dándole un enlace permanente. es decir:
<item rdf:about="http://plcoder.net/?doc=2134&amp;titre=mon-pc-se-la-pete">
<link>http://plcoder.net/?doc=2134&amp;titre=mon-pc-se-la-pete</link>
<guid>http://plcoder.net/?doc=2134&amp;titre=mon-pc-se-la-pete</guid>
...
</item>
Sin un GUID, si alguno de los contenidos de la publicación cambia, su agregador RSS podría pensar que es una publicación nueva. Con el GUID, incluso si el contenido de ese elemento cambia, su agregador RSS debería simplemente actualizar la publicación, en lugar de tratarla como un elemento nuevo.
Otros consejos
Al menos con Thunderbird 2.0.0.21 el problema es que TBird no parece respetar las etiquetas GUID pero sí respeta la etiqueta pubDate del canal . Por lo tanto, si pubDate es más reciente que con la última lectura, TBird leerá todas entradas (parece).
No sé qué pasaría si falta la etiqueta pubDate del canal ...
He experimentado estos problemas con algunos de mis propios feeds. Lo que sucedió es que empiezo con una lista de entradas como esta:
Item A
Item B
Item C
El cliente los descarga y todo está bien. Luego agrego un nuevo elemento, para que el feed se lea como:
Item D
Item A
Item B
D aparece en el lector.
Pero luego decido que no quiero ese elemento, por lo que la lista vuelve a:
<*>Cuando Thunderbird lea esto, contará C como un nuevo elemento. am utilizo un elemento GUID, así que dudo que ese sea el problema. Creo que tiene más que ver con el analizador de Thunderbird sin tener en cuenta los elementos más antiguos.
La solución alternativa es: " recordar " qué elementos ya ha publicado y desde entonces han sido excluidos del final de la lista por nuevos elementos. Básicamente, deberá mantener una lista actual de elementos en el feed y, cuando los elimine, acorte hasta que haya nuevos elementos para reemplazarlos.
Esto se explica en documentación de Thunderbird (en " Preguntas frecuentes sobre solución de problemas "):
P: ¿Por qué los mensajes de feed a veces se duplican?
A: Alimenta mensajes con contenido idéntico pero diferentes identificadores únicos son no detectado como duplicados. Consulte esta publicación para obtener más detalles.
La publicación vinculada para referencia:
- Las fuentes de Atom (obligatorio) tienen una identificación única; Los feeds Rss (no obligatorios) generalmente tienen un guid único. Para las alimentaciones Rss sin una guía, un intento está hecho para crear una identificación única a partir de partes obligatorias del elemento de feed.
- Todos los mensajes de feed descargados tienen un registro con esta identificación almacenada en feeditems.rdf y existen allí siempre que existan en el editor archivo, con esa identificación. Si el editor elimina un mensaje con la identificación de su archivo, después de 24 horas, el caché feeditems.rdf también se purga (en get messages biff).
- Si un editor reutiliza una identificación después de que se haya purgado, obtendrá un engaño (si el contenido es idéntico). Esto es un abuso de la intención. detrás de identificadores únicos y el error del editor.
- Si un editor reutiliza una identificación antes de que se elimine, y el contenido es diferente, no verá el nuevo contenido, ya que se tratará como un duplicado. Thunderbird no usa la etiqueta actualmente y su mal uso por parte de los editores puede dificultar la implementación.
- Si ve la fuente (Ctrl-U) de dos engaños aparentes, notará el encabezado del Id. de mensaje. Si dos engaños aparentes tienen diferentes Valores de Id de mensaje, entonces no son engaños independientemente del potencial contenido idéntico Tb no distingue contenido duplicado.
Si desea una depuración extrema, cambie el prefijo Feeds.logging.console para depurar o rastrear y reiniciar, para ver qué sucede durante la alimentación procesamiento.
Si cancela la suscripción de una URL de feed, esto borrará el caché feeditems.rdf para ese alimento Si posteriormente se vuelve a suscribir, obtendrá engaños de todos los elementos actuales en el archivo del editor que también existen en su feed carpeta.
La compactación no tiene ningún efecto en el procesamiento de la alimentación, solo elimina los marcados para borrar elementos del archivo. Si elimina una carpeta / la mueve a basura, no está suscrito. Comenzando con Tb29, si arrastra / suelta un carpeta de una cuenta de feed a otra cuenta de feed, la suscripción se conserva (pero no feeditems). Para perfiles muy antiguos / cuentas de feed (pre Tb17), puede ser una buena idea crear una nueva cuenta de feed y arrastre carpetas allí (Tb29 y arriba), ya que una nueva base de datos feeds.rdf es creado; la pena es una posibilidad de engaño por única vez.
Tuve el mismo problema ... Cambié al feed de Google y ahora está solucionado, aunque nunca supe la causa exacta
Thunderbird tiene algunos errores con la duplicación de entradas de feed, ¿tal vez es solo uno de ellos?