【網站速度優化】WordPress 媒體圖片轉移到子網域
提升網站讀取速度除了壓縮圖片外,還需要將圖片放置於子網域,對於瀏覽器而言一個網域同一時間一次只能下載4~6個資源(Chrome、FireFox、IE9以上)
若能新增網域同時間就會增加一倍的下載佇列,原本4~6個就會變成8~12個。如何達到呢?
文章目錄
1.新增子網域
我以虛擬主機Cpanel控制台操作面來講解,首先要先增子網域,在網域管理區塊點選子網域選項
子網域就叫images吧,資料夾名稱預設與子網域名稱一樣,如果跟現有資料夾有重複,手動更改名稱就可以了。
查看FTP在/www下已經多了一個剛剛新增的子網域對應的資料夾,剛新增的子網域需要等DNS轉址通常約6~24hr,DNS需要設定A Record 紀錄來轉址。
到這邊其實就可以把圖片檔丟到子網域的資料夾,並手動把圖片網址手動貼上去,這樣的工程對於Wordpress 來說太浩大了。笨方法!! 相信我試過了。
後來我發現可以透過改WP-optins 資料表將媒體預設路徑修改到→子網域的資料夾,我只要把現有的wp-content/uploads 全部轉移過去就可以了。
2.備份資料庫
到資料庫區塊的phpMyAdmin 來操作
接下來會需要修改資料庫的資料,所以先備份資料庫吧,以免指令打錯WP就毀了
點選Wordpress資料庫→匯出→執行。
3.修改媒體圖片上傳位置
找到wp_optins資料表→點選該資料表→搜尋→運算符選擇LIKE%…%→值輸入”upload”→執行
要先知道主機路徑,可以從Cpanel 查詢到,以我主機的路徑為/home4/willicv1
執行完後會出現三個搜尋結果,首先修改資料夾預設路徑,”upload_path“點選左邊編輯即可修改,預設是空白的
- upload_path:圖片資料夾路徑/home4/willicv1/public_html/images/uploads(原圖片資料夾)
- upload_url_path:子網域的網址路徑https://www.williamlion.tw/images/uploads
修改好後按執行,
一旦Wp_options 有了資料後,就可以到設定>媒體>上傳檔案,來檢查路徑有沒有錯,從這邊可以直接修改,Wordpress 為什麼不一開始就把這選項弄出來啦….還要先去資料庫弄
4.修改文章內圖片舊路徑
點選SQL,將下列兩串指令的網域修改成你的網域&子網域,按下執行就會將文章裡的舊路徑修改成子網域的路徑了!!
UPDATE wp_posts SET post_content = REPLACE(post_content,'http://www.domain.com/wp-content/uploads','http://img1.domain.com/uploads')
UPDATE wp_posts SET guid = REPLACE(guid,'http://www.domain.com/wp-content/uploads','http://img1.domain.com/uploads')
修改好後到Wordpress後台媒體查看圖片是否多有顯示出來,沒有的話檢查一下FTP裡面是否有照片,如果有些圖片是放在小工具裡面就手動更換路徑吧,沒幾個應該很快的,基本上到這邊就大功告成了!!
5.測試網站載入順序&速度
可以裡用WebPagetest 測試網站的目前載入速度,修改後可以發現圖片與CSS,JS等資源會一併下載,同一時間抓取的資源馬上Double!!!是不是很有效呢,趕緊來試試提升Wordpress整體讀取速度吧,成功的話別忘了分享此文章唷^^
(23) Comments
Arefly
前來支持一下~文章挺不錯的!我個人就用了這個方法耶!
蔚宏 林
分享撰寫文章的動力來自於你的支持,謝謝
Roe Rtx
請問:最後SQL那兩串指令是”一起”輸入還是分開兩次操作?謝謝
蔚宏 林
SQL 指令分開兩次操作
Edwardlom
很不错,我的博客是有用CDN来把静态文件都进行加速哦。
Jhan
威廉師,我修改好了以後,開啟後台媒體庫,裡面全部圖片都無法顯示耶,不過圖片的鏈結網址已經移轉成子網域的網址沒錯,請問現在圖片沒辦法顯示的問題要如何解決呢?
Jhan
我用FileZillaPortable去查看,圖片位置還是在原地資料夾內,不過開啟網頁後台,媒體庫內的圖片都是顯示我要的網址,請問這樣的問題是哪裡出錯呢?拜託幫忙協助,謝謝!
蔚宏 林
有把原本的照片/upload 複製到新的images 資料夾內了嗎,先上傳一張圖片看看跑去哪個資料夾了
蔚宏 林
DNS 有設定轉址了嗎?
Jhan
我上傳照片後還是看不到圖片,但是有顯示檔案,點進去看鏈結網址是顯示 http://img.domain.com/uploads 沒錯,但是去圖片資料夾路徑*****/public_html/img/uploads 裡面去找,找不到圖片,所以這樣的問題是?
(後台媒體庫可讓我上傳,可是上傳的好像是一個幽靈檔案)
(DNS我有轉好了,使用 http://img.domain.com/ 去搜尋是顯示我的首頁沒錯)
蔚宏 林
1.你的上傳路徑設定有錯,請去設定>媒體 (上傳的檔案將儲存於此目錄) 這邊要改成你的主機路徑
2.DNS 設定應該是顯示img資料夾裡面的檔案唷,不會是顯示主網域的內容
http://www.williamlion.tw/ 我的
蔚宏 林
wp_option 裡面的 upload_path 會是你上傳圖片的路徑,這邊要看你的主機路徑 *****/public_html/img/uploads
Jhan
我發現我可能是沒設定subdomains造成
我是使用VESTA 的vps後台,網址是註冊godaddy的,
我不知道設定subdomains要從哪個去做設定
(現階段godaddy我有去作DNS的 A (Host)添加,添加img的子網域;VESTA我是直接增加一個img.domain.com/的網站)
蔚宏 林
你先透過FTP 手動把照片丟到img裡面 123.jpg這樣
然後打img.domain.com/123.jpg 會不會顯示,有代表網域OK
不行的話找一下VESTA的設定方式,因為新增子網域,主機會需要設定對應的主機位置,透過VESTA 的新增子網域應該可以成功
你Godady的步驟是OK的,就只差在VESTA要重新設定嚕~~加油 只差一步
Jhan
我覺的現在主要問題是subdomains沒有弄好
研究好久還是不知道subdomains要從哪個去做設定
(現階段godaddy我是把DNS的 A (Host)添加 改成CName(Alias)添加,添加img的子網域,Host是填寫img,Points To是填寫@;最主要問題是VESTA後台它沒有creat a subdomain,所以我不知道是要從web去做添加img.domain.com的子網域還是說,直接在後台的DNS設定 CNAME紀錄 )
截圖
http://josieyewear.com/img/uploads/2015/07/11111112.jpg
http://josieyewear.com/img/uploads/2015/07/11111111.jpg
蔚宏 林
你點那個add web domain 子域直接打上去就可以了
img.josieywear.com
Jhan
這樣的話 媒體設定 內 “上傳的檔案將儲存於此目錄“ “完整的檔案網址“ 空格要填寫什麼路徑呢?
(“完整的檔案網址“ 我填寫 http://img.josieyewear.com/uploads
它就會無法顯示圖片,要空白才會便正常)
蔚宏 林
參考這張吧,這跟步驟1.2 方法一樣,要參考VESTA主機的位置 http://www.williamlion.tw/images/uploads/2015/01/2015-07-07_120951.jpg
你的subdomain還沒設定好一定看不到嚕
Jhan
我的主機位置是/home/mepo/web/josieyewear.com
我路徑改以下圖片,地一張這樣的路徑上傳就無法讀取,第二張的路徑就能順利上傳,所以是要用第二張的路徑嗎?
http://josieyewear.com/img/uploads/2015/07/11111113.jpg
http://josieyewear.com/img/uploads/2015/07/11111114.jpg
蔚宏 林
要用第二張
完整檔案網址 要打上去啊,不然看不到
Jhan
可是打上去以後圖片就開不起來了
如下面圖片
http://josieyewear.com/img/uploads/2015/07/11111115.jpg
http://josieyewear.com/img/uploads/2015/07/11111116.jpg
現在subdomain是弄成這樣
http://josieyewear.com/img/uploads/2015/07/11111117.jpg
Yuan Chen
HI威廉,照你方法做之後真的成功了!! 但似乎把固定網址改成”文章名稱”模式後,圖片都看不到了,到FTP資料夾去看多了個.htaccess 檔,是不是有甚麼權限設定?
蔚宏 林
Hi 很高興可以看到您成功了
固定網址是另一個問題,需要開啟 rewrite rule,要透過.htaccess 來設定
這邊有兩篇文章可以參考一下,需要把語法加進到.htaccess 檔案 才能使用固定網址的功能唷
https://sofree.cc/save-money-wordpress-link/
http://benjr.tw/10918