NSURLConnection много раз выполняется

если другой код не работает, попробуйте этот код.

(GET "/about/" [] (ring.util.response/content-type
                     (ring.util.response/resource-response "about/index.html" {:root "public"}) "text/html"))
7
задан Mike Abdullah 11 April 2013 в 09:09
поделиться

2 ответа

Я предполагаю, что вас беспокоят накладные расходы на создание HTTP-соединение. NSURLConnection достаточно умен, чтобы справиться с этим для вас, используя HTTP / 1.1 и повторно используя существующие соединения. Он не использует конвейерную обработку в прошлый раз, когда я проверял, но для вашей цели повторного использования соединения должно быть достаточно. Я настоятельно рекомендую вам установить сетевой сниффер и убедиться, что он работает так, как вы хотите.

Стоимость создания самих объектов тривиальна, порядка одного раза в 5 секунд, и вам не следует пытаться оптимизировать это (хотя, конечно, вы должны повторно использовать NSURL). Открытие соединения с сервером - дорогое удовольствие, особенно на iPhone.

Если вы обнаружите, что вам действительно нужна конвейерная обработка, вам, к сожалению, придется откатить собственный. Я слышал, что CFHTTPStream может это делать, но я не вижу много доказательств этого. CocoaAsyncSocket - лучший выбор для низкоуровневого доступа к сокетам без необходимости писать низкоуровневый код.

Поскольку задержка в сотовой сети может быть очень большой, возможно, что для завершения вашего соединения потребуется больше 5 секунд.

10
ответ дан 6 December 2019 в 10:03
поделиться

make a method that returns a request and do

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:[self requestMethod] delegate:self];

?

0
ответ дан 6 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

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