UIWebView медленная загрузка с использованием NSUrlProtocol Xamarin.Forms

Я работаю над iOS-приложением, используя Xamarin.Forms.

В этом приложении используется контроллер UIWebView, который показывает веб-приложение, размещенное на моем сервере. Каждый раз, когда я делаю запрос, я должен отправить пользовательский заголовок, чтобы определить, что этот запрос поступает в мобильное приложение, а не из браузера, для этого я использую объект NSUrlProtocol, который переопределяет метод Запрос, который вставляет пользовательский заголовок для каждого запроса. Это мой код:

    public override NSUrlRequest Request {
        get {
            NSMutableDictionary headers = null;
            if (null == base.Request.Headers) {
                headers = new NSMutableDictionary ();
            } else {
                headers = new NSMutableDictionary (base.Request.Headers);
            }
            headers.Add(NSObject.FromObject(AppVariables.headerVariable), NSObject.FromObject (AppVariables.appVersion));
            NSMutableUrlRequest newRequest = (NSMutableUrlRequest)base.Request.MutableCopy ();
            newRequest.Headers = headers;
            return newRequest;
        }
    }

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я заметил, что с тех пор, как я начал использовать NSUrlProtocol, время загрузки страниц увеличивается. В настоящий момент загрузка занимает 10 секунд, до этой реализации страница занимает приблизительно 3 секунды.

Может кто-нибудь указать на какое-то полезное направление, чтобы преодолеть это?

Ответ 1

Я не вижу причин задержки в времени отклика, когда вы используете пользовательские заголовки. Как упоминал Андреас в комментариях, я считаю, что это связано с вашим кодом сервера. Я бы рекомендовал профилировать ваш код сервера.

Вы видите похожие результаты при отправке запросов (с пользовательскими заголовками) из Fiddler или cURL?

Ответ 2

Как и @AndreasPaulsson и @prashant упомянул, сервер может быть виновником. Я бы рекомендовал тестировать API с помощью таких инструментов, как Postman, и проверить скорость ответа. Я также рекомендую вам проверить ModernHttpClient от Paul C Betts. В iOS библиотека использует NSUrlSession.