2010-03-10 2 views
0

난 당신이 함께 방문한 최근 웹 페이지를 연결하는 응용 프로그램을 짓고 있어요Safari의 NSURLCache 상점을 어떻게 공유합니까?

  • 배경입니다.

  • 이렇게하려면 코코아를 사용하여 최근 URL에 대해 HTML을 가져와야합니다.

  • 지금 당장은 보이지 않는 WebView를 사용하고 있습니다.

  • 내 앱의 캐시에 URL이 이 아니라면 이해합니다.이 URL은 입니다.

내가

확률이 페이지가 이미 방문한 된대로 내가 잡고있어 URL이 이미 사파리 캐시 된 것을 높다 원하는 것은.

내 앱이 URL의 Safari 캐시를 먼저 확인하도록합니다. 그것이 있으면이 데이터 만 사용해야합니다. 그렇지 않은 경우 웹 서버에 도달하여 페이지를 내 앱의 캐시에 저장해야합니다.

Safari에서 cache.db 파일을 sqlite3을 사용하여 구문 분석하지 않으려 고합니다.이 형식이 그대로 유지되는지는 잘 모르겠습니다. 나는 좀 더 단순하고 높은 수준을 추구합니다. 내가

난 당신이 방법 initWithMemoryCapacity:diskCapacity:diskPath:를 사용하여 자신의 NSURLCache를 설정할 수 있다는 사실을 알고 시도했지만 내가하여 나사 경우 사파리 캐시에 사파리를이 위쪽을 가리키는 시도하지 않으려는 무엇

그것에 쓰는 것.

Safari 캐시를 쉽고 높은 수준으로 공유 할 수 있습니까?

UPDATE

아하. 나는 내가 놓친이 일을하는 방법이있을 수 있다는 것을 깨달았습니다.

나는 페이지를로드 할 때 다음 URL 요청에 대한 NSURLRequestReturnCacheDataDontLoad의 캐시 정책을 지정, 사파리 캐시에 그것을 가리 initWithMemoryCapacity:diskCapacity:diskPath:NSURLCache의 새로운 인스턴스를 만들 수 있습니다.

이 작업이 실패하면 정상적으로 페이지를로드하려고 시도 할 수 있습니다. 나는 이것을 시험해보고 더 많이 알 때 질문을 업데이트 할 것이다.

답변

1

솔직히 말해서이 작업을 수행 할 수 없습니다.

첫째로, 나는 꽤 확신합니다. -[NSURLCache initWithMemoryCapacity:diskCapacity:diskPath:]은 예상대로 작동하지 않습니다. 대신 이전 캐시 파일을 삭제하여 자체 캐시 파일을 만듭니다. 잠재적으로 매우 화가 난 사파리.

다음으로 NSURLCache복합 캐시입니다. 즉, 데이터를 메모리에 먼저 캐시 한 다음 어느 시점에서 디스크로 이동합니다.따라서 Safari의 캐시 파일에 제대로 액세스 할 수 있다고하더라도 (그렇게 할 수는 없습니다) 오래된 캐시 된 데이터에만 액세스 할 수 있습니다. 가장 최근의 것이 아닙니다.

+0

한숨. 아직 시도하지 않았지만 당신이 옳다는 것을 확신합니다. 그것은 완전한 이해가 될 것입니다. –

+0

Safari는 방문한 페이지의 사본을 방문 기록에 저장하여 Spotlight에서 검색 할 수 있도록합니다. 그런 식으로 필요한 것을 빼낼 수 있습니까? –