2010-03-10 2 views
0

фонКак открыть хранилище NSURLCache Safari?

  • Я строю приложение, которое связывает последние веб-страниц, которые вы посетили вместе.

  • Для этого мне нужно получить HTML для последних URL-адресов, используя Cocoa.

  • Прямо сейчас, я использую невидимый WebView для этого.

  • Как я понимаю, если URL-адрес не является в кеше для моего приложения, это удаляет веб-серверы.

То, что я хочу

Шансы высоки, что URL я захватывая уже кэшируются Safari, как уже посетили страницу.

Я хочу, чтобы мое приложение сначала проверяло кеш Safari на URL. Если он есть, он должен просто использовать эти данные. Если нет, он должен попасть на веб-сервер и сохранить страницу в кеше моего приложения.

Я действительно не хочу разбирать файл cache.db из Safari с помощью sqlite3 - я понятия не имею, будет ли этот формат оставаться прежним. Я за чем-то более простым и более высоким уровнем.

То, что я пытался

Я знаю, что вы можете создать свой собственный NSURLCache используя метод initWithMemoryCapacity:diskCapacity:diskPath:, но я не хочу, чтобы попытаться это указывает на кэш Safari в случае он щурит Safari на написав ему.

Есть ли простой, высокоуровневый способ совместного использования кеша Safari?

UPDATE

Aha. Я только что понял, что может быть способ сделать это, я пропал без вести.

Я мог бы сделать новый экземпляр NSURLCache с initWithMemoryCapacity:diskCapacity:diskPath:, направьте его в кэш Safari, а затем указать политику кэша NSURLRequestReturnCacheDataDontLoad для URL запроса при загрузке страницы.

Если это не удается, я могу просто попробовать загрузить страницу как обычно. Я попробую это и уточню вопрос, когда узнаю больше.

ответ

1

Если честно, вы просто не можете этого сделать.

Во-первых, я уверен, что -[NSURLCache initWithMemoryCapacity:diskCapacity:diskPath:] не будет работать так, как вы ожидаете. Вместо этого он удалит старый файл кеша, чтобы создать его собственный; потенциально сильно нарушая работу Safari.

Во-вторых NSURLCache является составной кэш. То есть он сначала кэширует данные в памяти, а затем перемещает их на диск в какой-то момент.Поэтому, даже если вы могли бы правильно получить доступ к файлу кеширования Safari (который вы не можете), вы сможете получить доступ только к старым кэшированным данным; не самые последние.

+0

Вздох. Я еще не пробовал, но я уверен, что вы правы. Это будет иметь смысл. –

+0

Альтернативой является то, что Safari сохраняет копии посещенных страниц в Историю, чтобы Spotlight мог их искать. Можете ли вы вытащить то, что вам нужно именно так? –

Смежные вопросы