何时以及何时不使用CDN


13

我正在开发一个将几个小的gif图像加载到屏幕上的Web应用程序。我使用的是相对路径,这意味着它们是从提供php页面的同一Web服务器加载的。该操作是即时的,并且我与Web服务器不在同一大陆。

我刚刚为此CDN网络(Cloudfront)进行了测试,认为将静态文件移近用户是一个好主意。但是,所有这些文件现在需要半秒左右的时间才能在屏幕上呈现。我现在必须使用绝对路径,当然(https://xyzvf.cloufront.net/images/)

这是为什么?绝对路径有问题吗?我正在减少对自己服务器的HTTP请求,这是一件好事,但是这种延迟令人讨厌。CDN不适用于此吗?


4
这在很大程度上取决于CDN的位置。如果您有很多小图像,是否可以将它们组合为子画面?这将意味着仅一个请求即可加载所有图像。

他们在以下位置:michaelgaigg.com/blog/images/amazon-cloudfront.jpg 我在欧洲,并且从美国的Web服务器加载图像比从德国或在欧洲为亚马逊提供服务的任何位置加载图像都要快。也许不是加载时间是问题,而是其他问题?使用精灵是一个好主意,谢谢。

您还可以使用带有主机名的无协议URL,例如“ //xyzf.cloudfront.net/images”。这使您可以利用ISP和公司代理缓存来缓存非SSL版本的图像。这可以为您的访客体验和服务器/带宽负载带来巨大的好处。我们网站的访问者几乎全部来自美国的金融机构,我们从某种形式的缓存代理后面检测到大约85%的访问。YMMV,所以当然要测试您自己的网站和访问量。
rmalayter 2011年

Answers:


6

一个问题可能是DNS或keep-alive-也就是说,浏览器已经有IP地址为您的服务器,并具有开放到它的连接,而它必须解决CDN的服务器的名称,然后打开一个新的连接在那里,其中的一个或两者都构成您所看到的延迟。

拼写虽然仍然是一个好主意,但对解决这些问题没有帮助。确实,没有解决方案浮现在脑海。唯一的安慰是,如果您有一千个图像(以及CSS文件和JS文件以及所需的任何其他静态文件),那么半秒的延迟将不会更长,并且如果成千上万的用户点击它。


这响了。我应该提到,在需要第一个映像时(例如在页面中间)对CDN服务器进行了第一次调用。

嗯,如果您在页面的早期就对CDN进行了引用,则可能会获得更好的(感知)性能。最好的方法可能是将CSS文件放在CDN上,并将link标记放在head部分中,这样连接过程将立即开始。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.