在大家開始閱讀此文之前,小編先陳述下自己的觀點:非必要的情況,國內站點儘可能不使用Cloudflare的CDN服務。除非你所搭建的WordPress網站所使用的伺服器不在境內,否則國內有很多CDN服務可以滿足你的網站加速需求,比如阿里雲、騰訊雲,七牛雲、UPYUN等服務商提供的CDN。
但,如果你非得要使用Cloudflare的CDN,不妨看看sleele這篇教程,思路清晰且易於理解,enjoy!
前言
最近再一次著手優化部落格的訪問速度,基於上次的優化再次提升,這次用上了我之前放棄的cloudflare cdn加速方案,現在有了新的思路和新的工具。
cloudflare的cdn節點都在海外,國內訪問速度其實並不理想,如果自己的vps線路質量可以的話,用cloudflare cdn反倒會減速,這是我之前的想法,但是自cloudflare推出了cloudflare partner計劃,可以通過partner免費使用cname解析,從而可以使用某些奇淫巧術實現自定義cdn節點。
dnspod dns解析
本來想按邏輯順序來寫,但是考慮到實際操作是按照工具順序來執行,就先從dns解析說起吧!
以往如果我們要使用cloudflare的免費cdn,就要使用cloudflare的dns解析,現在有了partner計劃,可以免費使用cname解析,這次我們選用dnspod提供的dns解析,dnspod還提供d監控服務,d監控可以監控網站線路,並根據網路情況自動切換節點
先說說什麼是d監控
什麼是D監控?
D監控就是:當您的一個伺服器確認宕機後,系統會自動給您切換到可用的伺服器,宕掉的伺服器恢復後自動切換回原ip(注意:系統不預設開啟D監控,需要您手動啟用D監控)
檢測的原理:所有監控點會向目標服 務器發起一次 http請求,當且僅當所有監控點都得不到應答時,我們會認為伺服器宕機,從而進行操作。(這裡需要注意的是,403等錯誤返回只提示警告,不進行ip切換,500以上錯誤返回提示宕機,進行切換)
要使用dnspod dns解析,首先要註冊dnspod,並把域名掛在上面,這個相信有能力建站的人都會操作,我就不贅述了
域名放在dnspod dns解析後,暫時不要設定d監控,現在可以去搞cname了
cloudflare partner
先註冊cloudflare賬號(http://cloudflare.com/),之後去cloudflare partner處登入。
我使用的是笨牛網提供的cloudflare partner服務:https://cdn.bnxb.com/,
註冊登入笨牛網的cloudflare partner服務,然後選擇新增域名,使用cname方式接入。

BNXB管理後臺
提交後會給出cname地址,把cname地址填寫進dnspod的dns解析中。

CNAME回源設定
過一會就會生效,ping一下的網站,看是否走了cloudflare cdn,如果這時候走了cloudflare cdn,那麼ping網站的時候會出現cname地址。
重頭戲來了
cname接入cloudflare cdn最大的好處就是可以自定義cdn節點,這樣我們就可以選擇國內訪問最快的cloudflare cdn節點,從而實現加速訪問,並且在d監控的加持下防止網站因線路的緣故中斷訪問。
目前cloudflare所提供的免費節點很多都被玩爛了,所以需要大家自行測試。
我這裡分享一些網上的提供的ip,這些ip段,從中選擇ip段後修改ip地址,填寫到dnspod中,例172.64.32.56
,並且按照運營商填寫,每個運營商填寫兩個節點,海外為預設:
172.64.32.1/24 (推薦移動,走香港) 104.28.14.0/24 (推薦移動,走新加坡) 104.23.240.0-104.23.243.254 (推薦聯通、移動,線路未知) 108.162.236.1/24 (推薦聯通,走美國) 104.20.157.0/24 (推薦聯通,走日本) 104.16.160.1/24 (推薦電信,走洛杉磯) 172.64.0.0/24 (推薦電信,走舊金山) 172.64.32.* (走歐洲) 108.162.236.1/24 聯通 走美國 172.64.32.1/24 移動 走香港 104.16.160.1/24 電信 走美國洛杉磯 172.64.0.0/24 電信 美國舊金山 104.20.157.0/24 聯通 走日本 104.28.14.0/24 移動 走新加坡 104.18.62.1/24 香港hkix.net 104.16.35.1/24 香港hkix.net 104.16.36.1/24 香港hkix.net 104.18.35.1/24 香港hkix.net 104.18.36.1/24 香港hkix.net 104.16.54.1/24 香港 104.16.55.1/24 香港 104.18.128.1/24 香港 104.18.129.1/24 香港 104.18.130.1/24 香港 104.18.131.1/24 香港 104.18.132.1/24 香港 104.19.195.1/24 香港 104.19.196.1/24 香港 104.19.197.1/24 香港 104.19.198.1/24 香港 104.19.199.1/24 香港 #適合電信的節點 104.23.240.* #走歐洲各國出口 英國德國荷蘭等 延遲比美國高一些 適合源站在歐洲的網站 172.64.32.* #雖然去程走新加坡,但是回程線路的繞路的,實際效果不好,不推薦 104.16.160.* #聖何塞的線路,比洛杉磯要快一點,推薦 108.162.236.* #亞特蘭大線路,延遲穩定,但是延遲較高 #適合移動的節點 162.158.133.* #走的丹麥,這一段ip只有部分能用,可以自己試一下,繞美國 198.41.214.* 198.41.212.* 198.41.208.* 198.41.209.* 172.64.32.* 141.101.115.* #移動走香港的IP段有很多,以上並不是全部。CF移動走香港的分直連和走ntt的效果都挺不錯的,不過部分地區晚上還是會丟包。 172.64.0. * #這是走聖何塞的,一般用香港的就行 172.64.16.* #歐洲線路.繞 #1.0.0.1效果較好 電信部分 大多數省直接使用1.0.0.0即可,延遲低,丟包少, # 移動部分 #新加坡 104.18.48.0-104.18.63.255 104.24.112.0-104.24.127.255 104.27.128.0-104.27.143.255 104.28.0.0-104.28.15.255 # 移動部分 #聖何塞 104.28.16.0-31.255 104.27.144.0-243.254 104.23.240.0-243.254 #香港cloudflare1-100g.hkix.net 1.0.0.0-254 1.1.1.0-254 #香港直連 104.16.0.0-79.255 104.16.96.0-175.254 104.16.192.0-207.255
還有奇淫巧術
如果不想測試那麼多節點,或者擔心節點掛掉,可以把除預設外所有的記錄值都寫成1.0.0.1
這樣,cloudflare會自己判斷,解析後dns記錄會全都轉到1.0.0.1
,看起來很秀:

域名DNS管理
開啟D監控
點選下圖示示的圖示,把節點都勾選上;

D監控設定
檢視節點情況,目前免費節點的延遲都是忽高忽低,只要對應運營商線路的節點沒紅就沒事。

DNSPod域名監控
之後如果對節點不滿意就在dnspod裡更換節點即可,生效很快,d監控裡就可以及時檢視新節點情況
cloudflare page rules
cloudflare預設不會快取html檔案,所以為了把資料儘可能多的放到cloudflare節點裡,我們需要對快取內容進行設定。
這是cloudflare官方的 page rules講解,建議看一看,懶得看也沒有關係,按照我的設定來也行:

Page rules設定
注意!有先後順序
sleele.com/wp-admin* sleele.com/*preview=true* sleele.com/*
cloudflare快取需要時間,所以edge cache ttl設定時間長一些最好,否則還沒快取到cdn就過期了,我設定的7天,後臺和預覽文章不快取。
這裡再插一句,因為免費賬戶只有3條規則,對於WordPress是不夠用的,為了節省規則,需要修改WordPress登入地址,將其變為wp-adminxxxx
;
安裝Rename wp-login.php
外掛,修改登入地址為wp-adminxxxx
。

WordPress後臺登入地址
測試是否快取成功
這個可能要等一會才能看到效果,不過是否走cdn節點當時就能夠看出來,
關掉代理軟體,開啟Chrome開發者模式,Network
選項卡,Disable cache
禁用瀏覽器快取,選擇自己的網站網址,Headers
標籤,檢視Remote Address
是否為之前在dns解析處設定的地址。

快取命中檢視
cf-cache-status: HIT
則為命中快取,檢視Timing
標籤,看TTFB
時間,越短越好。

TTFB資訊檢視
經過CDN後訪客IP地址不正確的解決辦法
使用cloudflare cdn後,訪客的ip和留言ip都會變為cloudflare cdn的ip,解決辦法也非常簡單,cloudflare官方給出解決辦法。
Cloudflare將訪問者的 IP 地址包含在 X-Forwarded-For 標頭和 CF-Connecting-IP 標頭。
修改Nginx配置檔案,在http內容裡新增如下內容,把cloudflare的ip段新增進去:
location / { set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 104.16.0.0/12; set_real_ip_from 108.162.192.0/18; set_real_ip_from 131.0.72.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 162.158.0.0/15; set_real_ip_from 172.64.0.0/13; set_real_ip_from 173.245.48.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 190.93.240.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 199.27.128.0/21; set_real_ip_from 2400:cb00::/32; set_real_ip_from 2606:4700::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2c0f:f248::/32; set_real_ip_from 2a06:98c0::/29; # use any of the following two real_ip_header CF-Connecting-IP; #real_ip_header X-Forwarded-For; }
# 載入配置 nginx -s reload
WordPress再加速
WordPress是動態生成網頁,為了進一步提高載入速度,使用WP Super Cache
可以生成靜態頁面,同時開啟gzip壓縮選項,Cache Everything可以把gzip壓縮後的html快取進cdn,以提升載入速度。另一款Autoptimize外掛也提供非常優秀的WordPress優化支援。

WP Super Cache頁面壓縮開啟

WP Super Cache壓縮生效與否
除此之外,建議安裝官方外掛cloudflare
可以手動和自動清除快取,檢視資料分析,非常有用。

cloudflare外掛安裝
速度測試
首先說一下,這些速度測試的分數只能作為參考,沒有太大的實際意義,特別是谷歌測試。

boce網站速度測試

Google PageSpeed Insights

Pingdom
關於網站測速,可以閱讀網站測速效能測試深入淺出教程[附15款常用網站測速工具]和如何做到Google PageSpeed Insights測試滿分/100分兩篇文章!
結語
目前免費的cloudflare cdn加速手段就這些了,在page rules裡我禁用了效能優化,不推薦開啟。還有一個付費的據說能夠大幅提升速度,我沒用過。經過以上優化,大部分人應該能夠在3秒內開啟我的網站 https://sleele.com/。

Railgun 是 Cloudflare 專門為 Business 和 Enterprise 企業級客戶提供的終極加速方案。要使用它,先需要升級網站套餐為 Business 或 Enterprise,然後還需要在伺服器上安裝必要軟體並在 Cloudflare 上完成配置。這相當於是一個雙邊加速的軟體,其實現原理是讓伺服器與 Cloudflare 建立一個長久的 TCP 加密連線,使用 Railgun 獨有協議而不是 HTTP 協議,這樣顯然能減少連線延遲。此外,它還會對動態頁面快取:考慮到大多動態頁面都包含了大量相同的 HTML 資訊,在使用者請求一個新的頁面時,伺服器將只傳送那些變化了的內容。這相當於一種多次的 Gzip 壓縮。
文章轉自《sleele的部落格》,稍有改動。參考文章列表:
評論留言
脣槍舌劍 (4)
GG
2024.2.22 01:02
2024年这个方法还能用吗
Guu
2022.11.14 15:11
请问A记录和CNAME记录怎么能同时存在?而且怎么会有那么多A记录同时解析?
IP 查询
2022.5.6 10:05
讲的不错,学习了
佛系软件
2021.3.29 19:03
速度真的好快,