2010-10-08 65 views
0

我刚刚将我的CSS图像精灵更改为从本地运行到CloudFront,现在存在显着的延迟,即使在页面和页面重新加载时也是如此。任何想法为什么这可能发生?通过CloudFront比本地加载速度更慢的CSS图像精灵

+0

本地'是什么意思,在上下文中,'本地主机'? – 2010-10-08 03:36:42

+0

@大卫托马斯,是的,本地主机。 – 2010-10-08 04:39:34

回答

2

将图像从localhost移动到服务器(在这种情况下为CloudFront)总是会导致速度损失(当然相对于localhost)。这是因为即使有伟大的托管服务,浏览器必须通过因特网发送http请求到该服务器,以查明该文档是否因为之前被缓存而被修改,或者不是(未修改:HTTP响应304)。

假设文档不需要再次下载/重新缓存,这应该是CSS的图像请求的结尾(特别是如果您使用的是css-sprites)。

如果因为缓存已过期或文档已更改而必须重新下载图像精灵,那么显然浏览器必须通过互联网和网络再次下载该文件。由于您自己的网络/企业内部网,家庭与家庭之间的家庭与邻居之间的争用,以及您的ISP为您提供的任何速度,都会产生成本。

localhost是相同的机器,并且(可能)具有以毫秒为单位测量的响应。相比之下,访问亚马逊的CloudFront可能只需要一两秒钟,但这仍然是一个数量级(或更多)。

+0

谢谢!出于某种原因,Cache-Control头文件没有正确更新,并且我在S3浏览器中遇到了一个奇怪的问题(因为我无法加载它)。所以浏览器不会进行任何缓存,我仍然无法设置任何过期标题。 – 2010-10-08 04:58:51

+0

现在S3浏览器已经备份。一定是中断。设置缓存标题后,问题不会出现在我身上。但高层次的概述是绝对赞赏的。 – 2010-10-08 05:05:09

+2

请记住,CloudFront会将S3对象缓存24小时或其他内容。因此,如果您在S3上设置缓存控制标头,但CloudFront在您执行此操作之前已经缓存了您的对象,那么您将不会看到标头已设置一段时间的对象版本。 – tfe 2010-10-10 00:32:35