Tạo cache tầng sâu với Nginx Microcache

Microcache là một kỹ thuật tận dụng khả năng cache của Nginx ở cấp độ proxy để giữ lại phản hồi từ backend (PHP, WordPress…) trong vài giây đến vài phút. Dù thời gian cache rất ngắn, nhưng hiệu quả lại cực cao nhờ ngăn chặn hàng trăm request đổ về backend chỉ để nhận cùng một nội dung.

Tạo cache tầng sâu với Nginx Microcache

Microcache rất phù hợp cho WordPress có lưu lượng truy cập cao hoặc bị bot crawl liên tục.

1. Tại sao dùng Microcache?

  • Không phụ thuộc plugin cache trong WordPress
  • Chặn hiệu quả các đợt tấn công DDoS layer 7 (gửi hàng loạt GET request)
  • Tiết kiệm tài nguyên CPU và RAM vì không cần tái tạo HTML từ PHP cho mỗi request
  • Chỉ cache trong vài giây – đảm bảo nội dung gần như luôn mới

2. Cấu hình microcache trong Nginx

# Đầu tiên, tạo vùng cache
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:10m max_size=100m inactive=60s use_temp_path=off;

# Trong server block:
location / {
    proxy_pass http://127.0.0.1:8080; # backend PHP-FPM hoặc nginx+php-fpm khác
    proxy_set_header Host $host;
    proxy_cache microcache;
    proxy_cache_valid 200 301 302 10s;
    proxy_cache_valid 404 1s;
    proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
    proxy_cache_key "$scheme$request_method$host$request_uri";

    add_header X-Cache-Status $upstream_cache_status;
}

Giải thích:

  • proxy_cache_valid 200 10s: cache response 200 trong 10 giây
  • proxy_cache_key: tạo key riêng biệt cho mỗi URL và method
  • X-Cache-Status: thêm header để kiểm tra trạng thái (HIT, MISS, BYPASS)

3. Loại trừ các trang động

Ví dụ: trang admin, trang giỏ hàng, đăng nhập… không nên cache.

location ~* /wp-(login|admin) {
    proxy_no_cache 1;
    proxy_pass http://127.0.0.1:8080;
}

4. Làm sạch cache khi cần thiết

  • Vì microcache chỉ sống trong vài giây, bạn không cần xóa cache thủ công
  • Tuy nhiên có thể dùng module ngx_cache_purge nếu bạn muốn xóa theo URL

5. Kiểm tra hiệu quả

Gửi 2 request liên tiếp tới 1 URL:

curl -I https://your-site.com

Ở lần thứ 2, header sẽ có: X-Cache-Status: HIT

6. Kết hợp với cache khác

  • Microcache xử lý tầng đầu – cache toàn bộ nội dung 10s để giảm tải
  • Vẫn có thể dùng plugin cache tĩnh như WP Super Cache để phục vụ HTML tĩnh lâu hơn
  • Nên dùng chung với CDN như Cloudflare để cache lâu ở mức edge server

Kết luận

Microcache là một lớp bảo vệ cực kỳ hiệu quả cho hệ thống WordPress hoặc bất kỳ ứng dụng PHP nào. Với chi phí tài nguyên thấp và dễ cấu hình, đây là một giải pháp tối ưu cho các website cần hiệu suất cao, tần suất cập nhật vừa phải.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...