七牛的鏡像存儲看起來和傳統的CDN比較像,兩種都會在加速節點數據不存在的時候回源站抓取。不同之處在于,鏡像存儲是存儲(和普通的存儲沒什么不同,鏡像功能只是存儲的一個特性),不是緩存,故此鏡像存儲對每個資源來說只回源一次,后續訪問的時候就不再回源了。所以在源站的url內容會經常發生變化時,并不適合用鏡像存儲(少量變化是可以接受的,你可以主動刪除鏡像存儲里面的文件,從而達到強制刷新的目的)。
你可以主動同步數據到鏡像存儲,比如用 qrsync,或者自己寫同步上傳的代碼。這是可以的,而且的確可以獲得益處:因為鏡像存儲在資源第一次被訪問時會回源,故此第一次訪問會相對慢一點。主動同步數據可以提升第一次的數據訪問速度。
另外,鏡像存儲與qrsync數據同步一起使用,可以很好地將你的網站數據平滑遷移到七牛,無需中斷服務。假設源站所有的圖片,放在一個叫 img.example.com 子域里。那么平滑遷移的方式是:
在七牛上建立一個鏡像bucket,設定源站為 img.example.com。假設鏡像 bucket 是 example-img,鏡像 bucket 對應的域名為 example-img.qiniudn.com。
將所有對外使用的圖片的域名改為 example-img.qiniudn.com。
如果網站數據是 UGC(用戶產生內容)的,調整上傳流程,傳到七牛的鏡像 bucket。這樣源站就變成只讀。
使用 qrsync 同步工具將歷史數據全部同步到七牛的鏡像 bucket。
如此就完成整個遷移過程。此時 img.example.com 這個源站就可以廢棄不用了。
你可能會問:如果我希望保留 img.example.com 這個對外的域名,而不是用 example-img.qiniudn.com,可以么?答案是肯定的,不過會相對麻煩點,額外的事情有如下這些:
七牛鏡像 bucket 的源站,你需要另外指定一個(不能是 img.example.com 了),比如是 img-src.example.com,或者直接用 IP。
將 img.example.com 綁定到七牛的鏡像 bucket。為了達到這個目的,你需要提交 img.example.com 到七牛進行備案。這里面有人工審核的時間,可能不是即時的。
測試鏡像存儲如你所愿正常工作后,將 img.example.com CNAME 到七牛的鏡像 bucket 的域名(比如 example-img.qiniudn.com)。這一步務必小心不要做錯,因為這之后你的網站就通過七牛的鏡像存儲進行服務了。出于謹慎,建議先在本地修改 hosts 文件,將 img.example.com 指向 example-img.qiniudn.com 的IP地址進行測試。
評論