使用阿里雲CDN為Gravatar建立加速鏡像

2014年的時候,我發表過《使用七牛云存储加速下载Gravatar头像的方法》,其中利用的是七牛雲存儲的鏡像存儲功能。我當时之所以選擇七牛,是因為很多人也在用七牛。這其實是一種跟風的劣根的體現,需要自省。

此話怎講?

七牛雲存儲,是一種對象存儲服務,顧名思義,是用來存儲對象用的,類似於阿里雲的對象存儲(OSS)。其中,「對象」的定義比較狹義,就七牛與阿里雲的實現來看,存儲的「對象」是文件,也就是要有惟一的前綴(目錄)與文件名,不能含有參數。即使用戶請求的URI含有參數,回源抓取後存儲的文件的文件名也是不含參數的。當用戶再次請求並命中緩存後,URI中的參數就會被自動忽略。

也正是因此,使用七牛雲存儲加速Gravatar頭像的獲取會出現一些詭異的問題。眾所周知,Gravatar提供了數種默認頭像,均可以在用戶未上傳對應頭像圖片時用以臨時填充,而決定具體採用哪一種默認頭像的,則正是向Gravatar頭像圖片接口傳送的URI參數。對參數的忽略,就是對具體請求內容的忽略。從這個意義上來講,七牛雲存儲是不適合用來加速含有有效參數的圖片資源的獲取的。

按照這個思路,加速Gravatar頭像的獲取不能用「(對象)存儲」一類的雲服務,而應該用為緩存某個固定URI而生的CDN類服務。CDN類服務除了存儲的「對象」的性質與對象存儲類服務不同外,還具有的一項特性是「緩存」。與以七牛為代表的對象存儲服務不同,「緩存」是有期限的,目標的「緩存」可以在到期後自動移除,覆蓋以最新的內容(如果可能)。頭像是會更新的,CDN類服務的這一特性恰好迎合了加速Gravatar頭像的獲取的需求。所以,CDN類服務纔是加速Gravatar頭像的獲取的最優選擇。

恰逢中國政府對互聯網自由的壓制不斷加強,Gravatar頭像的官方獲取接口幾乎被全部封鎖,其中苟延殘喘的「cn.gravatar.com」速度也不理想,我們得以應用這項技術,加速Gravatar頭像的獲取。這也算是一種無聲的對抗罷。使用阿里雲CDN為Gravatar頭像獲取接口建立鏡像非常容易,下面介紹大致的方法。

首先,你要有一個阿里雲賬戶和一個通過阿裡雲接入並完成ICP備案的域名,然後在阿里雲的管理控制臺的「CDN」選項卡中添加一個加速域名,加速域名就是要用來訪問的域名,可以是一個二級域名,如我用的「gcache.papwin.com」,源站填寫一個已有的穩定可靠的非官方Gravatar頭像獲取接口(要確保中國內地可以正常訪問),提交並通過審核後,將回源域名設置為源站域名,再將加速域名以CNANE的方式解析到阿里雲提供的CDN域名上去。最後,在緩存規則中添加一條「/avatar」目錄,緩存時間可以稍設長一些,我設置的是一個月。至此,基於阿里雲CDN的Gravatar加速鏡像就建立好了。

在〈使用阿里雲CDN為Gravatar建立加速鏡像〉中有 10 則留言

  1. 不是国家专门对一个头像服务进行封锁,而是误杀。该头像服务使用了某CDN,只因为使用该CDN的某网站发表了让当局不爽的言论才导致封锁。

    1. 如果国外CDN商想留住客戶的話…就要搞自我審查,嘖嘖,原來是TG的陰謀,如果只想封某個特定網站的話DNS污染或者RST攻擊都可以啊

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。