如何诊断慢php图像代理


How to diagnose slow php image proxy?

我在我的网站上有一个图像代理,从我的域提供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请求以获得答案…这需要很长时间。