2016-11-18 4 views
0

Я пытаюсь найти способ предотвратить NSURLSession из ответов кэширования (в симуляторе), используя подход из этих вопросов:кэширования Предотвратить в NSURLSession для IOS Simulator

Prevent NSURLSession from caching responses

NSURLCache does not clear stored responses in iOS8

I не хочу использовать подход от этого вопроса:

Clear NSURLSession Cache

, который использует ephemeralSessionConfiguration при вызове NSURLSessionConfiguration при создании нового экземпляра NSURLSession.

Я просто хочу не кэшировать запросы, в худшем случае очистить кеш, когда приложение уходит в отставку. С вызовом [NSURLCache sharedURLCache] removeAllCachedResponses] в applicationWillResignActive исполнении в делете приложения я до сих пор получаю Cache.db подарок и полный кешированных ответов/запросов в соответствующем кеше симулятора iOS на диске.

До этого я изменил всю мою политику NSURLSessionConfigurationNSURLRequestReloadIgnoringCacheData кэша NSURLRequestReloadIgnoringLocalCacheData NSURLRequestReloadIgnoringLocalAndRemoteCacheData (протестировано все три случая, последний из которых, вероятно, не реализован) экземпляры (и эффективно осуществлять все политики кэширования). Не изменяет ли политика кэша, которая должна приводить к не кешированию ответов сервера и запросов на симулятор? Это зависит от политики хранения в заголовках ответов?

Я использую iOS 9.3 и iOS 10.1 для iPhone и v. 10 SDK для iOS. Проект находится в Objective C, возможно, полный проект Swift будет вести себя по-другому? Разве это поведение отличается от симуляторов и устройств? Почему это происходит, есть ли решение, отличное от использования зависимости (по какой-то причине оно не может попасть прямо сейчас).

+0

Вы пытались установить свойство cachePolicy на NSMutableURLRequest в NSURLRequestReloadIgnoringCacheData? Кроме того, задайте свойство URLCache для объекта NSURLSessionConfiguration равным нулю. –

ответ

1

У меня была аналогичная проблема, и я был в состоянии исправить это, установив Properties- Urlcache и requestCachePolicy на NSURLSessionConfiguration в ноль и NSURLRequestReloadIgnoringCacheData соответственно.

Кроме того, вы можете попробовать установить cachePolicy собственности на NSMutableURLRequest в NSURLRequestReloadIgnoringCacheData.

+1

Это было частью моего решения. Хорошо, что вы упомянули «NSURLRequestReloadIgnoringCacheData» - я проверил в [docs] (https://developer.apple.com/reference/foundation/nsurlrequestcachepolicy/nsurlrequestreloadignoringlocalandremotecachedata? language = objc), а поведение для аналогичного значения 'NSURLRequestReloadIgnoringLocalAndRemoteCacheData' не реализовано. Поэтому остерегайтесь этого. В качестве дополнения - я ** вручную задал размер кеша 0 **, чтобы предотвратить случайные ошибки в этом случае, если что-то изменится в будущем. –

0

Таким образом, грубое решение ... отбросить файл Cache.db при отставке приложения. Я предполагаю, что на симуляторе вы должны быть способны!

Но, вы попробовали ephemeralSessionConfiguration? Поскольку заголовок заголовка Apples говорит: * В эфемерном сеансе нет постоянного хранилища файлов для файлов cookie, * кеш или учетные данные.

+0

Вы прочитали мой вопрос? В нем явно говорится, что я не хочу использовать 'ephemeralSessionConfiguration' (по разным причинам). –