Могу ли я заставить NSURLConnection загружаться из кеша? - PullRequest
3 голосов
/ 04 февраля 2010

Я подумал о написании пользовательского URL-кэша, но похоже, что NSURLCache должен поддерживать дисковый кэш. Я бы хотел, чтобы мое приложение для iphone использовало кэшированные ответы, не обращаясь к серверу, пока ресурс не устареет (что определяется заголовками, которые я отправляю с сервера).

Должен ли я назвать что-то необычное с NSURLConnection? Как я могу заставить iphone использовать кешированную версию URL?

Обновление : Вот ссылка на мой код

http://pastie.org/808549

Ответы [ 4 ]

5 голосов
/ 04 февраля 2010

Я думаю, что вам может понадобиться добавить «cachePolicy» к вашему NSURLRequest:

Политика NSURLRequestReturnCacheDataElseLoad заставит систему загрузки URL использовать кэшированные данные, игнорируя ее возраст или дату истечения срока действия, еслисуществует, и загружайте данные из исходного источника, только если нет кэшированной версии.

http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/URLLoadingSystem/Concepts/CachePolicies.html#//apple_ref/doc/uid/20001843

Там есть несколько разных политик.Возможно, один из них поможет.

1 голос
/ 05 февраля 2010

Ответ, к сожалению, заключается в том, что iPhone не может выполнять кэширование диска с NSURLCache, что делает его неподходящим для описанного мною сценария.

Я катаю свой собственный класс.

0 голосов
/ 21 мая 2012

Кэширование с помощью политик, описанных @typeoneerror, кажется, работает нормально, если вы используете etags в своих запросах.

0 голосов
/ 04 февраля 2010

Посмотрите на классы ASI, пока вы на нем.

http://allseeing -i.com / ASIHTTPRequest /

Они очень милые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...