Кэширование в AFNetworking + UIImageView не относится к какой-либо политике кэша HTTP? (надеюсь, я ошибаюсь)

Кажется, я вызываю:

setImageWithURLRequest:(NSURLRequest *)urlRequest
              placeholderImage:(UIImage *)placeholderImage
                       success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
                       failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure

То, что результирующее изображение будет помещено в AFNetworking AFImageCache независимо от какой-либо политики кэша, установленной в заголовках HTTP-ответов, останется там и будет извлечено оттуда независимо от возраста при последующих запросах на тот же URL.

Является ли это точным?

Единственное, что заставляет его игнорировать кеш, заключается в установке NSURLRequestReloadIgnoringCacheData или NSURLRequestReloadIgnoringLocalAndRemoteCacheData в запросе (кстати, результирующее изображение будет повторно кэшировано AFNetworking, так что один из способов заставить его обновить его кеш).

Теперь, если AFImageCache не возвращает никакого удара, то AFNetworking (я думаю), для одного запроса, использует NSURLCache Apple по умолчанию, который теоретически уважает заголовки кэша HTTP. Но это всего лишь один запрос, поскольку AFNetworking затем выдает результат в свой собственный постоянный кеш, не относящийся к HTTP.

Сообщите мне, если я ошибаюсь или что-то пропустил.

Ответ 1

Согласно Мэтту, разработчику AFNetworking, решение этого - переопределить поведение, установив кэш общего изображения в другой класс, соответствующий протоколу AFImageCache. https://github.com/AFNetworking/AFNetworking/issues/2731