2010-12-17 16 views
6

Bir dizi keyfi RSS beslemesinden veri girişi alan bir uygulama yazıyorum. Beslemeler arka planda eşzamansız olarak işaretlenir ve beslemeye yeni bir öğe eklendiğinde bir yöntem çağrılır.RSS beslemesinden yeni öğeler ayıklama

Sorunum, beslemedeki yeni öğeleri tanımlamaktır. Bunu yapmanın en iyi yolu nedir? Birkaç fikir buldum ama hepsi kusurlu.

Öneri: yoklamak her seferinde, son anket Problem arasında pubDate'i daha tüm öğeleri yeni son öğeyi tutmak: pubDate gerekli alan değildir.

Öneri: Eğer dönmek her öğe için içerik karmasını tutun ve aynı karma Problem ile dönüş içeriği yok: Hızla bellek kullanımı açısından kontrol büyür

cevap

4

nasıl ikisi hakkında?

Yayın tarihini, döndüren yayınlarda kullanın ve diğerlerinin karmasını saklayın. Yayınların çoğu bir yayın tarihi döndürürse ve yayın sayısı milyonlara ulaşmazsa, hem performans hem de bellek açısından iyi olmalısınız.

+1

Nesnenin bir karmasını ve gövde için bir tane öneririm. Ayrıca, bazı yayınlarda kılavuzlar ve diğer UUID'ler bulunur. – sal

+0

Vücut ve konu için neden ayrı karı tutuyorsunuz? Bu sadece depolama giderlerimi ikiye katlamıyor mu? – Martin

2

PubDate'i, sağladığı RSS akışları için kullanabilirsiniz. PubDate sağlanmadığında ve yinelenen öğeler tam olarak eşitse, yani bunları ayırt etmek için herhangi bir alan bulamadığınızda, md5 sağlama toplamını hesaplayın ve karşılaştırma için saklayın. Bağlantıyı http://sharpertutorials.com/calculate-md5-checksum-file/ kullanın. Bu sayede tüm içerik dosyalarını ve bunların karşılaştırmasını saklamaktan kaçınırsınız. Pratik olarak, bellek sorunundan kaçınmak için sağlama toplamı verilerinizi sık sık yeni içeriğin sıklığına göre temizleyebilirsiniz. Mümkünse, farklı kaynaklar için çoklu karı koruyun. Gerçek sayıları gönderirseniz daha gerçekçi bir çözümümüz olabilir.