我在我的网站上有一个图像代理,从我的域提供https上的图像,以允许SSL连接完全可信。
以以下链接为例:
https://www.mylesgray.com/lastfm/85982517.png这提供上次的专辑封面。fm的CDN在HTTP上,通过HTTPS在我的域。
它是然而长期缓慢,我不知道为什么,它访问的页面是:
http://userserve-ak.last.fm/serve/64s/85982517.png正如你所看到的速度差异是巨大的,虽然我不能弄清楚为什么我的脚本这么慢,但它的操作非常简单:
$args = $_GET['q'];
list($img) = explode("/", $args);
header('Content-Type: image/png');
echo file_get_contents('http://userserve-ak.last.fm/serve/64s/' . $img);
它所做的就是抓取图像并重新提供。
是否有任何方法来调试在什么阶段在整个堆栈(从web服务器通过php脚本),这是导致这是如此缓慢?
当你比较这两个页面时,你可以看到它的效果:
https://mylesgray.com https://mylesgray.com/blog第二个使用代理来提供图像。
既然你的web服务器访问CDN有问题,要么他们限制你,要么你的web服务器上有DNS解析问题。
所以你的web服务器必须等待一些DNS请求的超时,以便向另一个服务器发出另一个DNS请求以获得答案…这需要很长时间。