IPhone: отличия между настройками NSURLRequestCachePolicy

При использовании NSURLRequest на iPhone, каковы различия в производительности реального мира между различными NSURLRequestCachePolicy настройки? Меня особенно интересует влияние политики кэша на восприятие пользователями скорости, с которой отображаются страницы UIWebView.

Я использую по умолчанию NSURLRequestCachePolicy, но я думаю, что, возможно, NSURLRequestReloadRevalidatingCacheData может быть лучше всего для большинства случаев, особенно при возвращении на предыдущую страницу.

Если вы использовали различные политики кэширования в реальных условиях, какая политика оказалась оптимальной в определенных обстоятельствах? Какая политика обеспечивает лучшую общую производительность по трем различным типам подключений iPhone, Wi-Fi, 3G и Edge? Является ли политика кэша даже существенным образом влияющим на восприятие пользователем скорости загрузки страницы, или я должен искать в другом месте для оптимизации времени отображения UIWebView?

Обновление:

Похоже, что существует консенсус в отношении того, что UIWebView, похоже, игнорирует настройки кэша в любом запрошенном NSURLRequest. У меня нет полной уверенности в том, что это окончательный ответ, но за исключением времени для проведения обширного тестирования, я не могу его отговорить. Поэтому я принимаю наивысший рейтинг. Тем не менее, я бы посоветовал вам взять ответы с солью, если это важно для вашего проекта. - TechZen.

Ответ 1

Я не думаю, что это повлияет на время загрузки UIWebView. UIWebView построен на WebKit, и они не используют NSURLConnection внутренне (они находятся на гораздо более низком уровне и напрямую используют CFNetwork).

Это, вероятно, не то, что вы хотите услышать, но, вероятно, лучший способ ускорить время загрузки UIWebView - не использовать UIWebView. Рендеринг веб-страниц довольно интенсивен. Фактически, MobileSafari на самом деле в основном связан с процессором, а не с привязкой к сети, - обратите внимание, сколько времени требуется, чтобы заполнить этот шаблон шахматной доски при прокрутке, например. Для быстрой и быстрой загрузки контента лучше всего создать собственный интерфейс в Cocoa.

Ответ 2

Я несколько часов для проекта, пытающегося получить UIWebView для кэширования страниц, которые я загружал. Это оказалось невозможным со стороны приложения без локального хранения файлов. Кажется, что UIWebView полностью игнорирует NSURLRequestCachePolicy.

Yahoo! имеет некоторую информацию о поведении кэширования iPhone.

Ответ 3

Я только что сделал grep в источниках WebKit и не нашел использования -[NSURLRequest cachePolicy].