1000 개 이상의 속성 (집세, 판매) 기록이 포함 된 XML 피드가 있습니다. 이 시나리오가 작동 된XML 피드를 로컬에서 캐시하는 가장 좋은 방법은 무엇입니까?
은 현재 항상 등 3 새 집, 3 개 개의 새 아파트와 같은 특정 기준 만 3 속성을 반환, 홈페이지에이 피드 16 배를 호출하고, 5 집, 5 개 추천 아파트 등을 추천합니다 잘 7 개월 동안 200 + 속성과 하루에만 100-200 조회가 발생했습니다. 이제 하루 700 회 이상 방문하고 1000 개가 넘는 사이트를 방문하고 홈페이지를 느리게하고 트래픽이 크게 증가하고 있음을 보여주기 위해 별도로 16 개의 피드를 다운로드하는 단계로 넘어 가고 있습니다.
따라서 이러한 스트림을 캐시하고 싶습니다. 원본과 모든 방문자의 스트림을 직접 다운로드하여 내 로컬 복사본을 사용하여 훨씬 빠르게 작업하고 트래픽 부하를 크게 줄이려합니다.
XML을 로컬로 다운로드하고 로컬로 파일을 호출하여 데이터를 표시하는 데 문제가 없습니다. 하지만 같은 가능한 문제를 해결하는 방법을 알고 싶습니다 :
- 로봇이 지역으로 XML 파일을 사용하여로드 새로운 데이터
- 동안 덮어 빈 될 XML 파일과 원본 파일을 업데이트하기 때문에 클라이언트에 데이터를 표시하지 백업, 원본 서버 인 경우 오프라인 홈페이지 내가 그 로봇이 파일을 업데이트 할 수없는 것 등의 방법으로 고객을 위해 잠금 데이터를 실 거예요 것을 확인
- 작업 및로드 여전히 것을 의미
내 첫 toughts는 것 이브에 대한 2 xml 파일 작업 클라이언트에게 보여지는 스트림과 다운로드 될 스트림이있다. 다운로드가 올바른 경우 다운로드 된 XML이 라이브 데이터로 사용되고 다른 하나는 삭제됩니다. 하나의 파일이 실제 데이터의 이름을 가진 파일로 작동하는 점진적인 표시.
비슷한 방식으로 XML 파일을 캐싱하는 방법이 있습니까? 정말로 중요한 문제는 방탄 솔루션을 통해 클라이언트가 오류 페이지 나 빈 결과를 보지 못하게하는 것입니다.
감사합니다.
아, 정상적인 캐시를 처리하는 또 다른 옵션은 허용되는 정도의 정상성을 추가하는 것입니다. ("신선하다면 나에게 주거나 평소에 구식이라고 생각하지는 않지만 4 시간 이내에 구식이라고 생각하면된다"). –
파일의 실제 크기 나 상태를 확인하고 캐시/동기화가 다른 경우에만 확인할 수 있습니까? – feronovak
변경 사항을 적용 할 수 있으면 (그리고 실제로는 종종 그렇듯이) 동일한 크기의 파일이 만들어지기 때문에 더 많은 노력을 기울여야합니다. 당신은 파일의 MD5 나 WebResponse가 가지고있는 E-tag를 저장할 수 있습니다. (E-tag가 보내지는 것이 더 좋으며, 가능하다면 웹 측을 실행하는 사람에게 berate하지 않을 때까지) 또는 마지막으로 웹 응답에서 -mod date (이 시스템에서 1 초 미만의 변경이 불가능한 경우). 다시, last-mod 및 etags를 확인하는 것은 적절한 옵션을 사용할 때 HttpWebResponse에 내장 된 웹 캐시를 적절히 사용하여 자동으로 발생합니다. –