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]
.