Фон
Я создаю приложение, которое связывает последние веб-страницы, которые вы посетили вместе.
Для этого мне нужно получить HTML для последних URL-адресов с помощью Cocoa.
Прямо сейчас я использую для этого невидимый WebView.
Насколько я понимаю, если URL-адрес моего приложения отсутствует в кеше, это касается веб-серверов.
Что я хочу
Высока вероятность того, что URL-адрес, который я перехватываю, уже кэширован Safari, поскольку страница уже была посещена.
Я хочу, чтобы мое приложение сначала проверяло кеш Safari на наличие URL-адреса. Если он есть, он должен просто использовать эти данные. Если нет, он должен попасть на веб-сервер и сохранить страницу в кеше моего приложения.
Я действительно не хочу анализировать файл cache.db из Safari с помощью sqlite3 - я понятия не имею, останется ли этот формат прежним. Мне нужно что-то более простое и более высокого уровня.
Что я пробовал
Я знаю, что вы можете настроить свой собственный NSURLCache, используя метод initWithMemoryCapacity:diskCapacity:diskPath:
, но я не хочу пытаться указать это на кеш Safari, если он испортит Safari, записывая в него.
Есть ли простой, высокоуровневый способ совместного использования кеша Safari?
ОБНОВЛЕНИЕ
Ага. Я только что понял, что может быть способ сделать это, который я пропустил.
Я мог бы создать новый экземпляр NSURLCache
с initWithMemoryCapacity:diskCapacity:diskPath:
, указать его на кэш Safari, а затем указать политику кэширования NSURLRequestReturnCacheDataDontLoad
для запроса URL при загрузке страницы.
Когда это не удается, я могу просто попытаться загрузить страницу как обычно. Я попробую это и обновлю вопрос, когда узнаю больше.