Amazon S3 省钱秘诀

本来吧,我是打算Google上搜索如何在Amazon S3上设置防盗链的,不过暂时还没找到防盗链的解答,倒是如何省钱的方式搜到一条......
由于Amazon S3的服务收费模式是由存储占用容量、下载请求次数、下载流量等来组成的,所以如果资源被盗链,真就杯具了。

Storage
$0.15 per GB-Month of storage used

Data Transfer
•First 10 TB per Month: $0.15 per GB

•Next 40 TB per Month: $0.11 per GB

•Next 100TB per Month: $0.09 per GB

•Over 150 TB per Month: $0.08 per GB

Requests
$0.01 per 1,000 PUT or LIST requests
$0.01 per 10,000 GET and all other requests

虽然下载请求、流量占用的收费看起来很低,不过真要是一首MP3被百度盗链了,弄你倾家荡产还是有希望的。

方法就是设置存储文件的过期时间

对于使用Amazon S3用做放置css、图片、js等资源的,这招尤其有效。

如果没有设置过期时间,访客每次刷新网页都是会产生多个下载请求,如果设置了过期时间,每次刷新就从用户第一次访问页面时候产生的缓存中提取,这样就不会生成下载请求

不少S3客户端都有设置文件过期时间的功能,不过好像收费的,估计只有S3 FOX是免费的吧

不过对于会代码的人来说,每次通过PHP上传到Amazon S3,设置过期时间应该不难,我这代码盲就算了,不明。

对于CSS、JS、图片等变动小的文件,设置一个10天~20天的过期时间我看是没啥问题

如果真修改了css文件,或者需要频繁修改css文件

那么在模版中调用css的时候可以用以下方式

Before: <link href="http://files.labnol.org/main.css?v=2" ../>
After:  <link href="http://files.labnol.org/main.css?v=3" ../>

修改v后面的数字就可以让访客的浏览器刷新来获取一个新版本的css文件

另外如果图片是放置在Amazon S3上的话,在网站的.htaccess文件中最好加入以下语句,设置图片的过期时间。

ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000

本文参考以下文章:
1、Lower your Amazon S3 Bill and also Improve Website Loading Time
2、Setting Far Future Expires Headers For Images In Amazon S3

Leave a Reply

Your email address will not be published. Required fields are marked *

返回主页看更多
狠狠的抽打博主 支付宝 扫一扫