Как я могу добавить Запрос HTTP, кэширующийся к приложению с помощью ASIHTTPRequests?

Я использую ASIHttpRequests и ASINetworkQueue в приложении для iPhone для получения некоторых 100k XML-файлов и большого количества миниатюр от веб-сервиса. Я хотел бы кэшировать запросы в стиле NSURLCache. ASI, кажется, не поддерживает кэширование, как, и я посмотрел на код, и это спадает до C для создания запросов, таким образом вставляя NSURLCache слой казался хитрым.

Что лучший способ состоит в том, чтобы реализовать это?

7
задан Kampai 7 August 2014 в 18:39
поделиться

3 ответа

NSURLConnection поддерживает кэширование в стиле NSURLCache и выполняет большую работу за вас «за кулисами». У него даже есть хороший метод делегата, который позволит вам управлять cachedResponse:

- (NSCachedURLResponse *) connection: (NSURLConnection *) connection willCacheResponse: (NSCachedURLResponse *) cachedResponse

0
ответ дан 7 December 2019 в 12:21
поделиться

Вы можете обеспечить собственное кэширование, прежде чем переходить к ASI-коду.

Оберните свой ASI-код в класс, имеющий метод:

- (NSString *) getContentFor: (NSURL *) url

Этот метод сначала проверяет внутренний NSDictionary, чтобы узнать, есть ли в нем ключ для указанный URL. Если это так, он возвращает объект, хранящийся с ключом.

В противном случае выполняется обычный запрос ASIRequest. Когда запрос получен с сервера, он сохраняет его как строку в вашем словаре с ключом URL-адреса.

Конечно, вам нужно будет осторожно обрабатывать асинхронные запросы и истечение срока действия старых запросов.

1
ответ дан 7 December 2019 в 12:21
поделиться

Любой, кто спрашивает, как они могут сделать это напрямую с помощью ASIHTTPRequest, может заинтересоваться этой ветвью кода, которая добавляет поддержку этой функции в качестве опции.

1
ответ дан 7 December 2019 в 12:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: