1)我不想在自己的服务器上存储任何图像。我希望它们完全在云中。我是否正确,这意味着我需要使用 S3 作为“源服务器”进行存储?CloudFront本身是否足够?CloudFront只是边缘 CDN 服务吗?
S3专为可靠长期地存储数据而设计,具有11个9的持久性。Bucket(称为)是特定于区域的,并位于Amazon的区域性数据中心之一。
相反,CloudFront被设计为一系列边缘服务器。默认情况下,当您从CloudFront主机名请求对象(即文件)时,该对象从源位置拉取并在最近的CloudFront边缘位置缓存24小时(可以通过编程方式进行调整)。在24小时结束时,缓存过期,CloudFront将在下次请求该对象时拉取新副本。
一种常见的设置是将CloudFront配置为使用S3作为其“源位置”。如果您喜欢,CloudFront还可以使用任何服务器(听起来您不希望这样)。 S3不是FTP服务器,因此它不支持(S)FTP协议。但是,几乎所有Mac OS X的FTP客户端都支持Amazon S3。Amazon S3具有Web服务API,因此您可以使用其中一个AWS SDK自动推送。一个名为
Cyberduck的工具可以执行SSH、SFTP、FTP、Amazon S3和其他一些功能。它适用于Mac和Windows。还有其他工具可用于提供GUI以使上传到S3就像通过FTP上传文件一样简单。
如果使用S3,我还能创建分层目录并在其中存储图像吗?这些图像存储在各种文件夹中,我不能改变代码,但我听说S3是一个平面“桶”?
是和否。
是的,S3是一个平面文件系统,但文件名可以有斜杠。例如,“abc/def/ghi/jkl.txt”实际上不是三个文件夹和一个文件,而是一个带有斜杠的文件名。大多数GUI工具选择将其视为文件夹和子目录,并且S3 URL看起来就像任何其他URL一样。就个人而言,我从未需要为S3做与SFTP不同的事情。
最后,我听说使用CloudFront时,如果文件更改,您必须发出无效请求,这会花费金钱。这是因为CloudFront正在从源缓存图像吗?我不习惯这种方式,因为在我的当前设置中,我只需通过FTP替换图像即可更新!没有办法模仿这种经典行为吗?
正确。因为CloudFront将源文件缓存到最近的边缘服务器。默认情况下,过期时间为24小时,但您可以将其设置为1小时,甚至可以通过“作废请求”更快地过期。我见过这个过程需要3-15分钟不等,因为CloudFront必须检查所有边缘服务器以确保它们都被清除。
如果您不想使用缓存,可以直接使用S3。这是最接近通过FTP替换图像的方法,但您会失去使用CDN的所有好处。
根据
Amazon CloudFront定价页面:
“每月前1,000个文件的作废请求没有额外费用。此后,每个作废请求中列出的文件收取0.005美元。”
每个月作废超过1,000个文件,每个文件只需支付半美分。我经常使用CloudFront,从未超过该限制,但如果您运行一个具有大量更改的大型站点,则肯定是可能的。
我希望这可以帮到你!:)