IOS: сеансы данных против эфемерных сессий

Мое приложение webView загружает страницу, и я ввожу некоторый javascript, который автоматизирует клик для меня и добавляет элемент в мой список пожеланий. Для чего-то подобного вы бы рекомендовали использовать сеанс передачи данных или эфемерный сеанс для загрузки страницы? Скорость важна для меня, и я пытаюсь оптимизировать, насколько это возможно, в Objective-C (yupp, даже миллисекундах).

Страница в основном загружает страницу продукта, поэтому все, кроме фактического продукта, всегда будет одинаковым (фоновое изображение, панель меню веб-сайта, изображения кнопок и т.д.). Прямо сейчас я использую NSURLConnection, и я пытаюсь обновить свой код, чтобы вместо этого использовать NSURLSession.

Ответ 1

Сеансы по умолчанию ведут себя аналогично другим методам Foundation для загрузки URL-адресов. Они используют постоянный кэш на диске и хранят учетные данные в цепочке ключей пользователей.

  • Конфигурация, которая использует глобальные или общие файлы cookie, кеша и хранилища учетных данных. Поведение аналогично NSURLConnection.

  • Общий сеанс использует глобальные одноуровневые учетные данные, кеш файлы и файлы хранилища файлов cookie. Это можно использовать вместо существующего кода, который использует + [NSURLConnection sendAsynchronousRequest: queue: completeHandler:]

Эфемерные сессии не хранят данные на диске; все кэши, хранилища учетных данных и т.д. хранятся в ОЗУ и привязаны к сеансу. Таким образом, когда ваше приложение аннулирует сеанс, они автоматически очищаются.

  • Конфигурация приватного сеанса, которая не сохраняет объекты хранилища файлов cookie, кеш и учетных данных. Как видно из названия, настройки конфигурации коротки, и они удаляются, когда сеанс недействителен.

Фоновые сессии аналогичны сеансам по умолчанию, за исключением того, что отдельный процесс обрабатывает все передачи данных. Фоновые сеансы имеют некоторые дополнительные ограничения, описанные в "" Фоновые передачи".

  • Фоновый сеанс похож на сеанс по умолчанию, но он может использоваться для выполнения сетевых операций от имени приостановленного приложения в определенных ограничениях.

  • Аналогично сеансу по умолчанию, но загрузка или загрузка данных может выполняться даже тогда, когда приложение находится в состоянии приостановления.

Ссылка из Apple Doc

//Default session
+ (NSURLSessionConfiguration *)defaultSessionConfiguration;

//Ephemeral
+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration;

//Background 
+ (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier;

Задачи и делегаты NSURLSession

Ниже приведено описание типов задач NSURLSession и их иерархии.

Подробнее

enter image description here

Ответ 2

Я думаю, вы использовали бы сеанс по умолчанию, поскольку хотите, чтобы он кэшировал данные на диск. Что-то в эфемерном сеансе не

Узкое место почти всегда IO, поэтому вы хотите кэшировать, когда данные не меняются. Для быстрого связывания данных это не стоило бы того, но вы явно говорите, что данные не изменятся.