cURL занимает слишком много времени, чтобы загрузить

Я вызываю конечную точку REST в PHP, используя cURL для получения некоторых данных JSON:

<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); echo $result; curl_close($ch); 

Для получения данных с использованием приведенного выше кода на моем localhost требуется 2,5 секунды. Тот же код занимает около 7,5 секунд при запуске на реальном сервере. Когда URL-адрес открывается непосредственно в браузере, он занимает всего 1,5 секунды.

Мой вопрос: почему требуется, чтобы cURL извлекал данные на реальном сервере и как я могу решить эту проблему?

Ниже приведен вывод curl_getinfo($ch) на сервере:

 Array ( [content_type] => application/json [http_code] => 200 [header_size] => 420 [request_size] => 113 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 7.305496 [namelookup_time] => 0.150378 [connect_time] => 0.473187 [pretransfer_time] => 0.473237 [size_upload] => 0 [size_download] => 1291504 [speed_download] => 176785 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => 0 [starttransfer_time] => 1.787901 [redirect_time] => 0 [redirect_url] => [certinfo] => Array ( ) [primary_port] => 80 [local_port] => 53962 ) 

Я нашел решение своей проблемы. Как я уже упоминал в вопросе, служба загружала самую быструю версию в браузерах. Итак, я проверил «Заголовки запроса» запроса на вкладке «Сеть» в Google Chrome Inspector. Я скопировал эти заголовки и использовал их в моем запросе cURL в PHP. После очистки этих заголовков я обнаружил, что все, что мне нужно сделать, это добавить заголовок Accept-Encoding . Я передал значение gzip так:

 curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); 

но также работает его пустая строка.

 curl_setopt($ch, CURLOPT_ENCODING, ''); 

Согласно руководству php.net для CURLOPT_ENCODING:

Содержимое заголовка «Accept-Encoding:». Это позволяет декодировать ответ. Поддерживаемые кодировки – это «личность», «дефляция» и «gzip». Если задана пустая строка «", загорается заголовок, содержащий все поддерживаемые типы кодирования.

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "set ur url"); curl_setopt($ch, CURLOPT_ENCODING , "gzip"); curl_setopt($ch, CURLOPT_ENCODING, ''); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); 

Проверьте этот пример.