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