2016-05-12 Thursday

最近,我发现了一个之前都没有发生过的问题。时不时就发现某个应该显示某张图片的地方,显示着placeholder image。难道我的代码哪里没写好吗?

调试后发现,应该是CDN的问题。

我在下载图片的代码处添加了一个条件断点,一旦error对象不为nil,就触发断点,最后发现,error对象的code都是404。

随后,我将image url复制出来,用curl -vvv命令进行下载。我发现,一般来说,第一次curl命令会输出404错误,往往第二次或者多次以后的curl,才会下载到正确的image数据。

通过观察curl返回的header数据,我发现了“Power-by-ChinaCache”字样,这说明,我司的CDN用的是ChinaCache的服务。

自此,真相大白了,首次下载的时候,CDN不知为何,直接给了404错误,而多次重试后,CDN更新了数据,就返回了200代码和image数据。