Подтвердить что ты не робот

Является ли NSURLCache постоянным во всех запусках?

Я ищу решение для сетевого кэширования для моего приложения iOS, которое постоянно работает во всех запусках. Я начал читать о NSURLCache, но не видел упоминания о сохранении. Кто-нибудь знает, как это происходит при использовании NSURLCache, затем закройте и откройте приложение? Сохраняется ли это?

4b9b3361

Ответ 1

NSURLCache автоматически кэширует запросы на запросы, сделанные поверх NSURLConnection и UIWebView, в соответствии с ответом на кеш с сервера, конфигурацией кэша и политикой кэша запросов. Эти ответы хранятся в памяти и на диске для времени жизни кеша.


Помимо

Я проверил поведение с помощью следующего кода. Вам не нужно использовать любое из приведенных ниже в своем коде. Это просто, чтобы продемонстрировать, как я подтвердил поведение.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Prime the cache.
    [NSURLCache sharedURLCache];
    sleep(1); // Again, this is for demonstration purposes only. I wouldn't do this in a real app.

    // Choose a long cached URL.
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://cdn.sstatic.net/stackoverflow/img/favicon.ico"]];

    // Check the cache.
    NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
    NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found.");

    // Load the file.
    [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL];

    return YES;
}

Код выполняет следующие действия:

  • Предоставляет кеш. Я заметил поведение, при котором кеш не возвращал кешированный результат до тех пор, пока кеш не был бы инициализирован и не имел возможности сканировать диск.
  • Создает запрос для файла с длинным кэшем.
  • Проверяет, существует ли ответ для URL-адреса и отображает статус.
  • Загружает URL-адрес.

При первой загрузке вы должны увидеть "Не найден кэшированный ответ". На последующих запусках вы увидите "Найденный ответ Cached!"