He estado reelaborando parte de una de mis aplicaciones de AJAX a cURL y parte de la optimización de este nuevo flujo de aplicaciones fue agregar CURLOPT_IPRESOLVE con el protocolo CURL_IPRESOLVE_V4 . Realicé algunas pruebas con y sin este protocolo y noté que los resultados me llegaron aproximadamente. 5 veces más rápido cuando se usa este protocolo, lo que lo convierte en la mejor optimización que agregué.
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); Sin embargo, estoy desconcertado de cómo funciona esto. ¿Alguien puede explicar por qué configurar la opción CURLOPT_IPRESOLVE acelera las solicitudes tan drásticamente? Por lo que pude encontrar, tiene algo que ver con la resolución de DNS de cURL.
La opción CURLOPT_IPRESOLVE cambia entre IPv4 , IPv6 o ambos.
Supongo que su sistema es técnicamente capaz de hablar IPv6, pero en la práctica no tiene una conexión activa. Entonces, en la configuración predeterminada, curl primero intenta conectarse a través de IPv6, alcanza un límite de tiempo y vuelve a IPv4. Al obligarlo a conectarse solo a través de IPv4, omite ese intento inicial, lo que acelera la solicitud.
Una explicación alternativa es que su sistema puede conectarse a través de IPv6, pero lo hace a través de una ruta de red diferente, que por alguna razón es más lenta que la red IPv4 predeterminada.