在Amazon S3上托管的网站加载速度非常慢

时间:2015-03-10 14:21:01

标签: amazon-web-services nginx amazon-s3

我有一个静态网站建设者的应用程序。用户可以创建他们的网站并将其发布到他们的自定义域。我使用Amazon S3来托管这些网站,并使用代理服务器 nginx 来路由对S3桶托管站点的请求。       我正面临一个加载时间问题。由于S3具体与任何区域无关,内容完全是HTML,理想情况下不应该有任何延迟。我有一些css和js文件不太重。

什么是优化技术以获得更好的性能?例如:设置标题?或利用缓存帮助?我添加了一个pingdom分析图像供参考。

此外,我不能使用cloudfront,因为当用户更新图像时,边缘位置在反映新图像之前有几分钟的延迟。它不是即时更新,因此限制了我的使用。有关改进的建议吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

您的S3存储桶 与您在创建它们时可以选择的特定区域相关联。它们不是按地理位置分布的。请参阅有关S3区域的AWS文档:https://aws.amazon.com/s3/faqs/

正如我们在您的屏幕截图中看到的,看起来您的水桶位于新加坡(东南1)。

您的客户是否位于亚洲?如果不是,您应该尝试创建更接近的存储区,以减少数据访问延迟。

关于cloudfront,如果你invalide your objects应该可以使用它,或者只是为每个修改使用新的文件名,就像tedder42建议的那样。

答案 1 :(得分:1)

来自不同区域的S3 HTTPS访问速度极慢,尤其是TLS握手。为了解决这个问题,我们发明了可以在网上找到的Nginx S3代理。 S3是最好的原始来源,但不是传输端点。

顺便说一下,尽量避免将“文件夹”作为子域名,但只使用长版本的端点URL指定S3区域(!)端点网址,绝不使用https://s3.amazonaws.com

减少DNS呼叫数量的一个好例子如下:

https://s3-eu-west-1.amazonaws.com/folder/file.jpg