2010-03-10 2 views
1

나는 내 RSS 리더를 만들고 어떤 RSS 항목이 이미 다운로드되었는지 확인하기 위해 각 항목의 링크를 MD5 해시로 변환합니다. RSS 피드가로드되면 ListView 객체에 모든 항목을 추가 한 다음 MD5 해시를 텍스트 파일과 비교하여 이미 존재하는 항목을 제거합니다. 이렇게하면 새 항목 만 표시됩니다.RSS 리더의 구성

피드가 5 개 뿐이므로 각 피드에 약 10 개의 항목 만로드되지만 지금은 매우 오래 된 MD5 해시로 인해 텍스트 파일이 복잡해집니다. 피드 링크, MD5 해시 및 날짜 저장과 같은 일을 SQLite 데이터베이스에서 수행하는 것이 더 나은지 궁금합니다. 그러나 그때조차도, 데이터베이스는 점점 더 커지고 결국 매우 느려질 것입니다.

어떻게이 문제를 완화 할 수 있습니까?

+0

RSS 피드에서 무결성을 확인하는 이유는 무엇입니까? 당신은 무엇을 해시하고 있습니까? 메시지 제목? 이봐, 나는 RSS 피드가있는 웹 사이트가 동일한 msg를 두 번 게시하지 않을 것이라고 생각한다. – Younes

+0

@Younes - 해시는 항목의 고유 한 URL입니다. 예를 들어 캠 프로그램이 매시간 피드를 확인하고 항목이 이전 시간의 피드에 남아있는 경우 항목이 두 번 이상 표시됩니다. –

답변

1

해시를 마지막으로 검색 한 날짜를 저장하는 경우 피드를 확인할 때마다 날짜를 업데이트하고 항목이 여전히 존재하면 미리 정의 된 간격보다 오래된 날짜를 제거하는 유지 관리 루틴을 만듭니다.

하루에 한 번이 유지 관리 루틴을 실행하십시오. 이것을 위해 데이터베이스를 사용할 수도 있고 XML (또는 무언가로) 플랫 캐시 파일 일 수도 있습니다. 그런 다음 MD5 해시, 날짜 등의 배열을 직렬화/비 직렬화 할 수 있습니다. 필요없는 배열을 제거 할 수 있습니다 더 이상, 배열을 캐쉬 파일에 다시 직렬화하십시오.

+0

이것은 꽤 좋은 솔루션처럼 보입니다. :) – cam

1

RSS에서 업데이트 된 필드를 사용하면 왜 업데이트해야합니까? 가장 최근의 가져 오기 날짜가 피드 업데이트 날짜와 비교됩니다.

2010-03-10T14 : 27 : 03Z

업데이트> last_fetched_date =도 "큰"파일과

+0

내가 좋아할 것이지만 매우 구체적인 용도로 사용하고 있으며, 불행하게도 구현해야하는 많은 "RSS"피드는 Date 필드를 제공하지 않습니다. 링크와 제목 만. – cam

+1

Ow .. 완벽한 세상에서 모든 RSS 피드는 guid 필드를 구현했습니다 :-) –

+0

피드의 마지막 변경 날짜는 RSS 2.0 스펙에 따라 선택 사항이며 항목의 모든 필드는 선택 사항입니다. 제목 또는 설명. 피드가 변경된시기를 확인할 수 없거나 항목을 고유하게 식별 할 수없는 경우 캐시하지 마십시오. –

0

SQLite는 매우 빠른 피드를 얻을. 데이터베이스가 문제가 될만큼 충분히 커지기 전에 많은 작업을 수행하게됩니다.

+0

명확히하기 위해 오래된 레코드를 지우는 "정리"루틴도 구현했습니다. 그러나 더 많은 일을하는 것은 시기상조 일 수 있습니다. –

관련 문제