Поместите компонент TIdHTTP
и компонент TIdSSLIOHandlerSocketOpenSSL
на форму VCL.TIdHTTP.Получите очень медленно с HTTPS-адресами
Не назначайте ничего для IdHTTP1.IOHandler
.
Тогда получите HTML от HTTP URL, например:
sHTML := IdHTTP1.Get('http://www.pixar.com');
• Это очень быстро и хорошо работает.
Затем назначьте IdSSLIOHandlerSocketOpenSSL1
на IdHTTP1.IOHandler
.
Затем введите ssleay32.dll
и libeay32.dll
в каталог приложения.
Тогда получите HTML от HTTPS URL, например:
sHTML := IdHTTP1.Get('https://www.youtube.com/watch?v=CB1Pukr0nFQ');
• Это очень медленно и занимает почти 4 секунды, чтобы получить HTML (!).
Итак, почему это так медленно с URL-адресом HTTPS и является самым быстрым способом получения HTML-кода как из HTTP, так и из HTTPS-адресов?
Итак, как браузер делает это так быстро? Когда я открываю Youtube в браузере, я мгновенно получаю страницу. – user1580348
Различные браузеры используют разные реализации SSL/TLS и делают разные вещи. Кроме того, у браузеров также намного больше вычислительной мощности. Вы сравниваете яблоки с апельсинами здесь. В любом случае, я протестировал URL-адреса, которые вы предоставили, используя последний снимок SVN для Indy, и требуется 'TIdHTTP.Get()' всего 1,4 секунды для запроса, загрузки и декодирования данных YouTube. И это учитывает все накладные расходы, о которых я говорил. –