純代碼實現(xiàn)WordPress靜態(tài)文件分離-圖像媒體全部遷移至阿里云(oss)對象存儲,降低服務器存儲壓力
[重要通告]如您遇疑難雜癥,本站支持知識付費業(yè)務,掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
雖然自己的 WordPress 博客很早就云化了,用了云服務器、云數(shù)據(jù)庫、CDN,等等,不過在 WordPress附件云化,其實自己一直都沒有太在意過,只是某一些時間發(fā)現(xiàn)是該云化了,備份博客的Bukcet都已經(jīng)快20G開外了,甚是悲傷,就想到了動靜分離,把靜態(tài)文件比如圖片、css、js等文件放到對象存儲中,這樣可以大量節(jié)省網(wǎng)站服務器帶寬,同時對靜態(tài)文件做cdn加速來實現(xiàn)網(wǎng)站速度提升。
比如我這個網(wǎng)站,在未做動靜分離前,從源站下載的數(shù)據(jù)有3MB,1000個人同時請求就是3GB,帶寬壓力會比較大。
做動靜分離后,篩選源站下載資源,只有11.5KB,同樣1000個人同時請求,數(shù)據(jù)只有11.5MB,數(shù)據(jù)量壓縮到了原來的1/260。
對于大并發(fā)網(wǎng)站,動靜分離能夠大大減少服務器帶寬的壓力,有沒有簡單的動靜分離方式?那肯定是有的,有不少插件之類的,寫這篇文章的時候,其實我已經(jīng)用了騰訊云的插件,畢竟我網(wǎng)站也在騰訊云,前段時間也用了這個代碼放阿里云,發(fā)現(xiàn)并不是自己理想中的,就直接變了騰訊云,但也要記錄一下;
function sk_rewrite(){
ob_start("Rewrite_URI");
}
add_action('init', 'sk_rewrite');
function Rewrite_URI($html){
$domain = 'bjlaoliang.com'; //填寫主站域名
$img = 'domain.oss-cn-hangzhou.aliyuncs.com'; //填寫圖片資源域名,示例使用的是阿里云OSS杭州區(qū)的bucket域名
$static = 'domain.oss-cn-hangzhou.aliyuncs.com'; //填寫css與js的資源域名,示例使用的是阿里云OSS杭州區(qū)的bucket域名
$html = preg_replace('/http(s|):\/\/'.$domain.'\/wp-([^"\']*?)\.(jpg|png|gif|bmp|jpeg)/i','//'.$img.'/wp-$2.$3',$html); //把圖片鏈接替換成遠程路徑
$html = preg_replace('/http(s|):\/\/'.$domain.'\/wp-([^"\']*?)\.(css|js)/i','//'.$static.'/wp-$2.$3',$html);//把css及js鏈接替換成遠程路徑
return $html;
}
把上方代碼放入主題文件的functions.php中即可。
在插入以上代碼后,還需要把你網(wǎng)站的靜態(tài)文件放入對象存儲中,記得uri要一致。你也可以開啟回源來實現(xiàn)自動把服務器上的文件同步到對象存儲中。
還是拿阿里云OSS舉例,在bucket的基礎設置->鏡像回源中進行設置。
點擊這里的設置按鈕。
點擊創(chuàng)建規(guī)則按鈕。
在這里寫上你網(wǎng)站的域名,其他不需要修改,然后點擊下面的確定即可。
回源設置完成,之后你網(wǎng)站上的所有圖片、css、js文件都會被轉(zhuǎn)到oss的地址,如果oss上沒有該文件,oss會自動訪問服務器并把文件同步到oss中。
延伸閱讀:aliyun-oss-support插件
aliyun-oss-support插件下載地址:
https://github.com/IvanChou/aliyun-oss-support
aliyun-oss-support插件插件特色
支持 Aliyun OSS 的圖片服務(根據(jù)參數(shù)獲得不同尺寸的圖片)
自定義文件在 Bucket 上的存儲位置
支持 HTTPS 站點
支持阿里云內(nèi)網(wǎng)和 VPC 網(wǎng)絡
全格式附件支持,不僅僅是圖片
支持 wordpress 4.4+ 新功能 srcset,在不同分辨率設備上加載不同大小圖片
支持在 WordPress 后臺編輯圖片
支持預設圖片樣式,圖片保護,自定義分割符
中英文雙語支持,方便使用英文為默認語言的同學
支持在其他插件/主題中通過系統(tǒng)鉤子調(diào)用插件功能
代碼遵循 PSR-4 規(guī)則編寫
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!