2011-10-08 4 views
0

나중에 읽을 수 있도록 웹 페이지를 오프라인으로 저장할 수있는 앱을 만들려고합니다. ASIWebPageRequest 프로젝트가 웹 컨텐츠를 캐시 할 수 있음을 발견했습니다. 그러나, 나는 100 페이지와 같은 많은 웹 페이지를 가지고 있다면, 각각 하나는 많은 이미지를 포함하고있다. 그것을위한 좋은 해결책인가? 아니면이 프로젝트는 캐시에서 콘텐츠를 동적으로로드 할 수 있습니까?iOS에서 나중에 읽을 수 있도록 웹 페이지를 오프라인으로 저장하십시오.

나는 다른 해결책을 생각하고 있지만 가능한지 구현할 방법이 확실하지 않습니다. 제안 해 드릴까요?

페이지를로드 할 때 iOS가 http 콘텐츠를 구문 분석하고 image, css, js와 같은 모든 리소스를 데이터베이스에 저장합니다. 다음에 액세스 할 때 해당 리소스 데이터베이스를 가져옵니다. 가능한가?

감사합니다.

답변

3

예 가능합니다.

NSURLRequest에서 반환 한 내용에 대해 regexp를 수행하고 모든 링크와 이미지를 디스크에 저장할 수 있습니다. 내 제안은 경로를 regexp로 바꾸고 이미지/리소스의 이름을 해당 컨텐츠의 md5로 바꾸는 것입니다. 두 번 이미지를 얻을 경우 그래서, 그것은 단지

: 한 번 다운로드합니다 나는 이것에 대한 코드를 많이 썼습니다,하지만 난 그것을 게시 할 수 없습니다 :(하지만이 가능하고 약 100 라인 소요 작동합니다.

도움을 주시면 +1 해주세요. 감사합니다.

+0

질문이 있습니다. 번들로 별도의 파일로 저장합니까? 아니면 데이터베이스에 저장합니까? –

+0

각 파일을 별도의 파일로 저장합니다. 파일의 URL이 "http://foo.org/abc.gif"인 경우 appfolder + "foo.org/ "과 같이 저장합니다. 데이터베이스가 필요하지 않습니다. html의 src/href 태그를 대체하고 디스크에 저장하십시오. –

1

이것은 NSURLCache (http://www.nshipster.com/nsurlcache/)를 사용하기에 완벽한 기회입니다. 그것은 여러 가지 모드로 운영되며 그 중 두 가지 모드가 요구 사항을 충족시킵니다. 처음에는 캐시를 채우기 위해 사용합니다. 후속 사용에서는 ReturnCacheDataDontLoad 모드에서 사용할 수 있습니다. 이렇게하면 상대 경로, 도메인 간 문제 등을 유지/변경해야하는 모든 문제가 완전히 제거됩니다.

관련 문제