2010-12-17 15 views
6

私は、一連の任意のRSSフィードからデータ入力を受けるアプリケーションを作成しています。フィードはバックグラウンドで非同期にポーリングされ、新しいアイテムがフィードに追加されるたびにメソッドが呼び出されます。RSSフィードから新しいアイテムを取り出す

私の問題は、フィード内の新しいアイテムを特定することです。それを行う最良の方法は何ですか?私はいくつかのアイデアを思いついたが、すべてに欠陥がある。

提案:あなたがポーリングするたびに、最後のポーリングの最後の項目 のpubDateのより全項目新しい 問題保つ:pubDateのが必要 フィールドではありませんが。

提案は:あなたが返すすべてのアイテムのためのコンテンツ のハッシュを維持し、同じハッシュ 問題に 戻りコンテンツをしません:急速にメモリ使用量の面で制御 の外に成長し

答えて

4

方法両方について?

返信するフィードでpub-dateを使用し、他のハッシュを保持します。 ほとんどのフィードがpub-dateを返し、フィードの数が何百万にも達しない場合は、パフォーマンスとメモリの両方が問題ありません。

+1

私は、件名のハッシュと本文のハッシュをお勧めします。また、いくつかのフィードはguidと他のUUIDを持っています。 – sal

+0

なぜ身体と被験者に別々のハッシュを保存するのですか?ストレージのオーバーヘッドを倍増させるだけではないのですか? – Martin

2

PubDateは、提供されているRSSフィードに使用できます。 PubDateが提供されておらず、重複した項目が正確に等しい場合、つまり、それらを区別するための単一のフィールドが見つからない場合は、md5チェックサムを計算して比較用に保存します。リンクhttp://sharpertutorials.com/calculate-md5-checksum-file/を使用してください。この方法では、コンテンツファイル全体とその比較を保存しないようにします。実際には、新しいコンテンツの頻度に基づいてチェックサムデータを頻繁にパージして、メモリの問題を回避することができます。可能であれば、異なるソースに対して複数のハッシュを維持する。実際の数字を投稿すると、より現実的な解決策が得られる可能性があります。

関連する問題