iPhone: различия в производительности между настройками NSURLRequestCachePolicy - PullRequest
11 голосов
/ 14 февраля 2010

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

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

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

Обновление:

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

Ответы [ 3 ]

3 голосов
/ 19 февраля 2010

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

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

2 голосов
/ 22 февраля 2010

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

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

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

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

...