图像存储和网站的CDN

时间:2010-10-13 09:01:58

标签: php asp.net amazon-s3 amazon-ec2

目前我希望将我的网站图片移至存储服务。我有两个用PHP和ASP.NET开发的网站。

使用Amazon S3服务,我们可以托管所有图片和视频以提供网页。但是当我们想要提供图像时,使用S3服务有一些限制。

  1. 如果网站需要与原始图像不同尺寸的不同缩略图,则很难。我们还需要订阅EC2。虽然从S3到EC2的数据传输是免费的,但在处理图像大小调整操作之前,数据传输需要时间。
  2. 以zip格式上传文件数量并在S3中解压缩无法减少上传次数。
  3. 如果我们想转移到其他提供商,则无法从S3下载多个文件。
  4. S3中的图像名称区分大小写。如果图像名称与请求不匹配,则不会加载图像。
  5. 在所有这些中,第一个是非常重要的,因为图像调整大小是一般要求。

    哪家提供商最适合实现我的目标。我是否可以仅为了图片托管的目的转移到Google AppEngine,还是有其他供应商可以提供上述服务?

4 个答案:

答案 0 :(得分:2)

我偶然发现了一家名为Cloudinary的好公司提供CDN图像存储服务 - 它们还提供了多种允许动态图像处理的方式(裁剪将主要关注您,因为我们正在谈论关于不同大小的缩略图)。

我不确定他们如何在网站速度增强方面与maxcdn等其他公司竞争,但从我所看到的情况来看,他们在图像处理方面有更多选择。

答案 1 :(得分:0)

S3非常慢,也没有分发。相比之下,Cloudfront也是您可以获得的最慢和最昂贵的CDN之一。唯一的好处是,如果您已经使用其他AWS,您将获得一个账单。

我在博客中介绍了不同的CDN并进行了一些测试: http://till.klampaeckel.de/blog/archives/100-Shopping-for-a-CDN.html

至于设置,我建议使用origin-pull的东西。因此,您自己托管图像,CDN会在第一次请求时请求它的副本。

这也意味着您可以使用脚本“动态”生成图像,因为它们只会被拉一次左右。只需设置适当的缓存标头。然后缓存图像,直到您清除CDN的缓存。

HTH

答案 2 :(得分:0)

我刚刚遇到CloudFlare - 根据我的网站了解,您不需要对您的网站进行任何更改。显然,您只需更改DNS设置即可。甚至提供免费选项。

答案 3 :(得分:-1)

如果您使用的是EC2,那么S3是您的最佳选择。 “最佳实践”是简单地预渲染所有尺寸的图像并使用不同的名称上传。即:

/images/image_a123.large.jpg
/images/image_a123.med.jpg
/images/image_a123.thumb.jpg

这种做法正在被Digg,推特使用(曾几何时,也许不是twimg ......),还有许多其他公司。

这可能不太理想,但它是最快速,最简单的方法。在切换到另一个提供商方面,您可能不会这样做,因为无论如何都需要传输所有文件。如果你有1,000,000张图片或3,000,000张图片,你仍然有很多兆字节的文件。

幸运的是,S3有一个导入/导出服务。您可以向他们发送一个空的硬盘驱动器,他们将对其进行格式化并将数据下载到它只需支付少量费用。

就您对案例敏感性的担忧而言,您找不到具有区分大小写的提供商。如果您的代码写得正确,您可以将所有名称规范化为大写或小写,或使用某种基本的64 ID系统来处理您的情况。

总而言之,S3将为您提供最好的“帮助”,如果您想加快速度,它还支持CloudFront。 使用S3因为原因3和4是无稽之谈,因为它们可能适用于你去的任何地方。