AWS 幾年前就推出了他的CDN服務- Cloudfront,可以允許創建一個URL,指向用戶自己的S3 bucket或者Web server。當其他人訪問這個Cloudfront URL的時候,DNS會自動解析到最近的物理位置的邊緣服務器(Edge server),然後edge server會查詢自己是否已經有相關的緩存,如果沒有,他會向Orgin發送請求獲取信息,並保持在當地。默認的緩存時間是24小時。
詳細的工作過程參考以下鏈接
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HowCloudFrontWorks.html
首先,先創建一個S3 Bucket, 取名叫做beanphoto, region就設在Sydney好了
然後上傳一個圖片
爲了保證所有人都能從Cloudfront的URL訪問,必須設置成public
先看看S3 Bucket本身的鏈接是否工作
打開木有問題。風景不錯吧,這個是豆子在斐濟的一個小島拍的照片
切換到CloudFront, 點擊 Create Distribution
選擇 Web, RTMP是給流媒體準備的
Domain name輸入S3 Bucket的名字,其餘的默認選項
Price Class可以選擇世界內的範圍,我選擇的美國和歐洲
我還添加了一條CNAME,因爲Cloudfront自動生成的URL太難記住了,同時我還需要在DNS的控制面板裏面也添加對應的CNAME
點擊確定之後就會開始創建,他會把相關的配置(不是具體的內容)傳送給所有的Edge Server。這個過程大概要15分鐘左右。
接下來,豆子登錄Godaddy,添加一條CNAME
添加好了,等候個5分鐘左右就可以查詢了
解析一下CNAME,成功。
可以看見對應的Cloudfront URL有多個服務器地址,這些都是Edge Server的地址
等了15分鐘,總算配置完成了
我們來測試一下是否有效。
登錄這個測試網站 http://tools.pingdom.com/
首先測試S3的初始地址,大概需要4.66S才能打開
然後測試一下CDN之後的URL,只需要724ms
通過顏色對比,可以發現DNS解析,連接,下載數據的時間都大爲減少了!
隔了一天之後,甚至還可以查看CloudFront的相關訪問記錄
比如歐洲的邊緣服務器被訪問了4次
而美國的邊緣服務器被訪問了15次左右