CURLOPT_DNS_USE_GLOBAL_CACHE 啟用時會啟用一個全局的DNS緩存,此項為線程安全的,並且默認啟用。
CURLOPT_DNS_CACHE_TIMEOUT 設置在內存中保存DNS信息的時間,默認為120秒。
1)fopen/file_get_contents 每次請求遠程URL中的數據都會重新做DNS查詢,並不對DNS信息進行緩存。但是CURL會自動對DNS信息進行緩存。對同一域名下的網頁或者圖片的請求只需要一次DNS 查詢。這大大減少了DNS查詢的次數。所以CURL的性能比fopen/file_get_contents 好很多。
2)fopen/file_get_contents在請求HTTP時,使用的是http_fopen_wrapper,不會keeplive。而curl卻可以。這樣在多次請求多個鏈接時,curl效率會好一些。(設置header頭應該可以)
SO,如內部有需求不斷請求內網dns server,盡量加上,用curl
或者用DNSMasq