Nếu bạn đang chạy WordPress trên VPS hay hosting shared mà TTFB vẫn chậm trên 500ms, thì Cloudflare Full Page Cache chính là giải pháp tiết kiệm nhất mà mình từng thử. Không cần nâng cấp server, không cần mua plugin đắt tiền — chỉ cần cấu hình đúng Cache Rules trên Cloudflare là TTFB giảm xuống dưới 100ms.
Trong bài này, mình sẽ hướng dẫn bạn thiết lập Cloudflare Full Page Cache cho WordPress từ A đến Z, bao gồm thay nameserver, cấu hình SSL, viết Cache Rules, kết hợp plugin Cloudflare, và cả cách xử lý lỗi thường gặp. Mình đã áp dụng chính xác các bước này cho nhiều site WordPress khác nhau, từ blog cá nhân đến WooCommerce.
Cloudflare Full Page Cache La Gi Va Vi Sao WordPress Can No?
Cloudflare Full Page Cache la viec ban yeu cau Cloudflare luu tru ca trang HTML (khong chi CSS, JS, image) tai cac edge server tren toan the gioi. Khi visitor truy cap, Cloudflare tra ve ban HTML cache ngay tai data center gan nhat, khong can danh ve origin server.
Mac dinh Cloudflare chi cache static assets (CSS, JS, hinh anh). HTML thi khong — moi request van danh ve server WordPress, goi PHP, query database, sinh trang tu dau. Full Page Cache se bat Cloudflare cache luon HTML, giam 70-90% request den server.
Ban Can Chuan Bi Gi Truoc Khi Bat Dau?
Truoc khi bat dau, ban can co nhung thu sau:
- Mot tai khoan Cloudflare (mien phi la du)
- Website WordPress dang chay binh thuong
- Quyen truy cap domain DNS (de thay nameserver)
- SSL da cai tren server (Let’s Encrypt hoac bat ky cert nao)
Luu y: Neu ban dung hosting shared, mot so host ( nhu Cloudways, Kinsta) da tich hop Cloudflare. Ban kiem tra voi nha cung cap truoc khi tu setup.
Buoc 1: Tao Tai Khoan Cloudflare Va Them Domain
Dau tien ban truy cap cloudflare.com va dang ky tai khoan. Sau khi xac thuc email, dang nhap vao dashboard va nhan nut “Add a Site”. Nhap ten domain cua ban (vi du: example.com), chon plan “Free” la du bat dau.
Cloudflare se scan DNS hien tai cua ban va tu import cac record. O buoc nay, ban can kiem tra ky:
- Cac A record, CNAME record co dung IP server chua
- Proxy status (bieu tuong may) cho domain chinh phai mau cam (Proxied), khong phai xam (DNS Only)
- MX record cho email van nguyen ven
Luu y quan trong: Hay chup anh man hinh danh sach DNS record truoc khi thay doi. Truoc hop can quay lai ban se can no.
Buoc 2: Thay Doi Nameserver (DNS Migration)
Day la buoc quan trong nhat va cung la noi nhieu nguoi ngai nhat. Cloudflare se cap cho ban 2 nameserver, vi du:
anna.ns.cloudflare.com
bob.ns.cloudflare.comBan dang nhap vao noi mua domain (Namecheap, GoDaddy, Tenten, Matbao…), tim phan “Name Server Settings”, xoa nameserver cu, thay bang 2 nameserver cua Cloudflare, save lai.
Qua trinh truyen DNS mat tu vai phut den 48 gio. Ban quay lai Cloudflare dashboard nhan “Verify Nameservers” va cho den khi trang thai chuyen tu “Pending” sang “Active”.
Luu y: Trong thoi gian cho DNS truyen, site cua ban khong bi down. Traffic van chay binh thuong qua nameserver cu cho den khi chuyen hoan tat.
Buoc 3: Cau Hinh SSL/TLS De Tranh Redirect Loop
Day la buoc ma minh thay 80% nguoi mac loi. Neu cau hinh sai, site se bao ERR_TOO_MANY_REDIRECTS va khong truy cap duoc.
Vao Cloudflare dashboard > SSL/TLS > Overview. Ban se thay 4 che do:
- Off: Khong ma hoa. Khong dung.
- Flexible: Cloudflare ma hoa den visitor, nhung khong ma hoa den origin server. NEU BAN CHON CAI NAY, WORDPRESS SE BI REDIRECT LOOP.
- Full: Ma hoa ca 2 dau, chap nhan self-signed cert.
- Full (Strict): Ma hoa ca 2 dau, yeu cau cert hop le. Day la cach tot nhat neu ban dung Let’s Encrypt.
Ban chon Full (Strict). Vi da co Let’s Encrypt tren server roi nen che do nay bao mat tot nhat.
Dung Cloudflare Origin Certificates De Khong Lo Let’s Encrypt Het Han
Neu ban dung Let’s Encrypt ma bat Cloudflare proxy (may cam) thi se gap loi: Let’s Encrypt khong renew duoc vi Cloudflare chan qua trinh domain verification. De fix, ban dung Cloudflare Origin Certificate thay cho Let’s Encrypt:
- Vao SSL/TLS > Origin Server > Create Certificate
- Chon “Let Cloudflare generate a private key”, key format RSA (2048)
- Hostnames: nhap domain cua ban (vi du: *.example.com, example.com)
- Certificate Validity: chon 15 years (15 nam luon, khong can renew nua)
- Nhan Create, copy CERT va Private Key
- Cai CERT va Key len server (Nginx hoac Apache)
Sau do, trong phan SSL/TLS > Edge Certificates, bat “Always Use HTTPS” len. Xong buoc 3.
Buoc 4: Cai Plugin Cloudflare Cho WordPress
Vao WordPress admin > Plugins > Add New, tim “Cloudflare” va cai plugin chinh thuc. Phien ban hien tai la 4.12.8+ (Cloudflare da tro lai phat trien plugin active tu thang 9/2025).
Sau khi kich hoat plugin, vao Settings > Cloudflare:
- Nut “Authenticate” > chon “Create API Token”
- Cloudflare se mo trang tao token. Ban dung template “WordPress” hoac tao custom token voi 2 quyen:
Zone:ReadvaCache Purge:Write - Copy token, dan vao plugin va xac nhan
- Plugin se tu dong keo zone ID va cau hinh co ban
Luu y: Dung API Token, KHONG dung Global API Key. Global Key co quyen qua rong, nguy hiem neu bi lo.
Buoc 5: Cau Hinh Cache Rules (Phan Quan Trong Nhat)
Day la buoc quyet dinh cache co hoat dong hay khong. Tu thang 7/2024, Cloudflare da deprecate Page Rules. Tat ca cau hinh cache moi phai dung Cache Rules tai Caching > Cache Rules.
Nguyen tac: Tao rule Bypass truoc (uu tien cao nhat), sau do tao rule Cache Everything cho phan con lai. Cache Rules danh gia theo thu tu, rule dau tien match se co uu tien.
Rule 1: Bypass Cache Cho Admin Va Trang Dong
Vao Caching > Cache Rules > Create Rule. Dat ten “Bypass WP Admin”. Dan expression sau vao (chinh sua “example.com” thanh domain cua ban):
(starts_with(http.request.uri.path, "/wp-admin")) or
(starts_with(http.request.uri.path, "/wp-login")) or
(http.request.uri.path contains "/wp-json/") or
(http.request.uri.path contains "xmlrpc.php") or
(http.request.uri.path contains "/feed") or
(http.request.uri.path contains "/cart") or
(http.request.uri.path contains "/checkout") or
(http.request.uri.path contains "/my-account") or
(http.request.uri.query contains "preview=true") or
(http.cookie contains "wordpress_logged_in_") or
(http.cookie contains "wp-") or
(http.cookie contains "comment_") or
(http.cookie contains "woocommerce_cart_hash") or
(http.cookie contains "woocommerce_items_in_cart") or
(http.cookie contains "PHPSESSID")Phan “Then app settings”: chon Bypass cache. Deploy rule.
Luu y: Dung bo qua rule nay. Nhieu ban chi tao Cache Everything ma quen Bypass, ket qua la wp-admin bi cache, visitor nhin thay dashboard cua admin. Minh gap truong hop nay rat nhieu.
Rule 2: Cache Static Assets
Tiep tuc Create Rule, dat ten “Cache WP Static”. Expression:
(starts_with(http.request.uri.path, "/wp-content/uploads")) or
(starts_with(http.request.uri.path, "/wp-content/themes")) or
(starts_with(http.request.uri.path, "/wp-includes"))Settings: chon Eligible for cache, Edge TTL: 1 month, Browser TTL: 1 day. Deploy.
Rule 3: Cache HTML Pages (Cache Everything)
Day la rule de cache HTML. Dat ten “Cache WP HTML”. Expression:
(http.host eq "example.com") and
(ends_with(http.request.uri.path, "/")) and
(not starts_with(http.request.uri.path, "/wp-")) and
(not http.cookie contains "wordpress_logged_in_") and
(not http.cookie contains "woocommerce_") and
(not http.cookie contains "wp-")Settings: chon Eligible for cache. Edge TTL: chon “Ignore cache-control header and use this TTL”, dat gia tri 1 week. Browser TTL: 4 hours. Deploy.
Thu tu 3 rule phai la: Bypass (1) > Static (2) > HTML (3). Kiem tra lai trong danh sach Cache Rules, dung thu tu la duoc.
Buoc 6: Cache Purge Tu Dong Khi Update Bai Viet
Khi ban sua bai viet hoac dang bai moi, cache cu phai duoc xoa de visitor nhin thay noi dung moi. Co 2 cach:
Cach 1: Dung Plugin Cloudflare (Tu Dong)
Neu ban da authenticate plugin o Buoc 4, plugin se tu dong goi Cloudflare API de purge cache khi ban update post. Tuy nhien, plugin chi purge URL cua bai do, khong purge trang chu, category, tag lien quan.
Cach 2: Dung WP-CLI Hoac Custom Script
Neu ban can purge toan bo site hoac purge nhieu URL, dung WP-CLI:
# Purge toan bo cache Cloudflare
wp cache flush
# Hoac dung Cloudflare API truc tiep
curl -X POST "https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/purge_cache" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'Minh thuong viet 1 function trong functions.php de purge cache trang chu + category khi dang bai moi:
add_action('publish_post', function($post_id) {
$post_url = get_permalink($post_id);
$home_url = home_url('/');
$urls = [$post_url, $home_url];
// Them category URLs
$cats = get_the_category($post_id);
foreach ($cats as $cat) {
$urls[] = get_category_link($cat->term_id);
}
$payload = json_encode(['files' => $urls]);
wp_remote_post(
"https://api.cloudflare.com/client/v4/zones/" . ZONE_ID . "/purge_cache",
[
'headers' => [
'Authorization' => 'Bearer ' . CF_API_TOKEN,
'Content-Type' => 'application/json',
],
'body' => $payload,
'timeout' => 10,
]
);
});Cloudflare APO La Gi? Co Nen Dung Khong?
APO (Automatic Platform Optimization) la tinh nam trong plugin Cloudflare. No se cache HTML tai Tat CA edge server dong thoi (default cache chi cache tai server ma visitor gan nhat). APO tu dong bypass cho logged-in user, tu dong purge khi update post trong 30 giay.
Gia: $5/thang cho Free plan, mien phi cho Pro/Business plan. Neu ban muon de dang nhat, bat APO len la xong, khong can Cache Rule 3.
Nhung minh khong khuyen dung APO neu ban da tao Cache Rule 3. Lap lai se gay xung dot, cache page admin, cache WooCommerce session. Chon 1 trong 2: APO hoac Cache Rules, khong ca hai.
Cach Kiem Tra Cache Da Hoat Dong Chua?
Sau khi cau hinh xong, ban can verify. Mo terminal va chay:
curl -I https://example.com/Nhin vao header cf-cache-status:
- HIT: Trang da duoc cache va dang serve tu edge server. Tot!
- MISS: Trang chua co trong cache, Cloudflare da lay tu origin. Refresh lai se thanh HIT.
- DYNAMIC: Trang khong duoc cache (vi tri query string, cookie, hoac Cache Rule khong match). Can kiem tra lai expression.
- EXPIRED: Cache het han, dang refresh.
Neu ban gap MISS lien tuc sau nhieu request, nguyen nhan thuong la:
- Cache Rule expression khong match dung
- Cookie bi match vao bypass rule (kiem tra DevTools > Application > Cookies)
- Cache TTL qua ngan
Core Web Vitals Cai Thien Bao Nhieu Sau Khi Cache?
Sau khi ap dung Full Page Cache, minh da benchmark tren 3 site WordPress va day la so lieu thuc te:
- TTFB: Giam tu 450-850ms xuong 40-95ms (giam 80-90%)
- LCP: Giam tu 2.8-3.5s xuong 1.2-1.8s
- Server load: Giam 70-90% request den origin (chi con logged-in user + REST API)
- PageSpeed Insights: Tang tu 55-70 len 85-95
Day la bang khong can thay doi gi them — khong tang PHP version, khong them RAM, khong doi theme. Chi Cloudflare cache thoi.
Loi Thuong Gap Va Cach Fix
Loi 1: ERR_TOO_MANY_REDIRECTS
Nguyen nhan: SSL mode dang la “Flexible” ma WordPress dang bat HTTPS.
Cach fix: Vao Cloudflare > SSL/TLS > chuyen tu “Flexible” sang “Full (Strict)”. Xong trong 30 giay.
Loi 2: Admin Bar Hien Cho Visitor Khong Dang Nhap
Nguyen nhan: HTML cua admin (co admin bar) bi cache va serve cho tat ca visitor.
Cach fix: Kiem tra Cache Rule Bypass co dung khong. Expression phai co (http.cookie contains "wordpress_logged_in_"). Dong thoi, xoa cache hien tai: Caching > Configuration > Purge Everything.
Loi 3: Cart WooCommerce Bi Reset / Don Hang Cua Khach Khac
Nguyen nhan: Cache Rule Bypass khong co cookie WooCommerce, trang /cart/ /checkout/ /my-account/ bi cache.
Cach fix: Them vao Rule 1 (Bypass) cac cookie sau:
(http.cookie contains "woocommerce_cart_hash") or
(http.cookie contains "woocommerce_items_in_cart") or
(http.request.uri.path contains "/cart") or
(http.request.uri.path contains "/checkout") or
(http.request.uri.path contains "/my-account")Loi 4: Bai Viet Moi Khong Hien Thi Tren Trang Chu
Nguyen nhan: Cache HTML TTL qua dai, hoac plugin Cloudflare khong purge trang chu.
Cach fix: Them home_url('/') vao danh sach purge nhu function minh huong dan o Buoc 6. Hoac tam thoi Purge Everything trong Cloudflare dashboard.
Loi 5: Mixed Content ( HTTPS Bi Anh Huong)
Nguyen nhan: Mot so URL trong theme/plugin van dung http:// thay vi https://.
Cach fix: Bat “Always Use HTTPS” trong Cloudflare > SSL/TLS > Edge Certificates. Dong thoi chay plugin “Better Search Replace” trong WordPress de doi tat ca http://example.com thanh https://example.com trong database.
Checklist Tong Hop Sau Khi Cau Hinh
Day la checklist 8 buoc de ban dam bao cau hinh dung:
- Nameserver da chuyen sang Cloudflare (status: Active)
- SSL/TLS mode la “Full (Strict)”
- Always Use HTTPS da bat
- Plugin Cloudflare da authenticate voi API Token
- Cache Rule Bypass cho wp-admin, wp-login, logged-in cookie, WooCommerce
- Cache Rule Cache Everything cho HTML
cf-cache-statustra ve HIT khi curl test- Cache purge tu dong khi publish/update post
Sau khi tick het 8 muc nay, site WordPress cua ban da chay voi toc do edge cua Cloudflare — giong nhu ban dung CDN gia tien hang tram dollar ma chi ton $0/thang. Neu gap bat ky loi nao khong co trong phan troubleshooting, ban nhan comment ben duoi, minh se giup.