Phần 8 : Cache / CDN

1.Giới thiệu:

Cloudflare giúp các website tải nhanh hơn bằng cách lưu trữ bản sao của nội dung website trên các máy chủ phân tán toàn cầu. Khi người dùng truy cập website, Cloudflare cung cấp nội dung từ trung tâm dữ liệu gần nhất, giúp giảm độ trễ và tối ưu hiệu suất.


Phân loại nội dung:

  1. Nội dung tĩnh (Static content):

    • Đây là những tài nguyên không thay đổi thường xuyên, ví dụ: hình ảnh, tệp CSS, JavaScript, font chữ.

    • Cacheable: Cloudflare có thể lưu trữ nội dung này trong bộ nhớ đệm (cache) để phục vụ người dùng nhanh hơn mà không cần yêu cầu lại từ server gốc.

  2. Nội dung động (Dynamic content):

    • Là những nội dung thay đổi liên tục tùy thuộc vào người dùng hoặc ngữ cảnh, ví dụ: trang hiển thị thông tin cá nhân, giỏ hàng.

    • Uncacheable: Cloudflare không lưu trữ những nội dung này vì cần được tạo mới từ server mỗi khi có yêu cầu.


Các yếu tố ảnh hưởng đến việc Cloudflare cache nội dung:

  1. Caching levels (Cấp độ cache):

  2. File extension (Phần mở rộng tệp):

  3. Presence of query strings (Sự hiện diện của query string):

  4. Origin cache-control headers (Header Cache-Control từ server gốc):

  5. Origin headers that indicate dynamic content (Header chỉ định nội dung động):

  6. Cache rules that bypass cache on cookie (Quy tắc cache liên quan đến cookie):


Các quy định bổ sung:

  • Một website sử dụng Cloudflare có cấu hình DNS bật proxy.

<img src="./imageasset.jpg" /> sẽ được cache imageasset trong trung tâm dữ liệu Cloudflare

  • Không cache tài nguyên từ các bên thứ ba như Facebook, Flickr:

ví dụ : <img src="https://facebook.com/photo/image.jpg" /> sẽ không được cache vì nó được lưu trữ ngoài hệ thống Cloudflare

  • Không cache nội dung từ nguồn không được proxy


Plans:

Feature
Free
Enterprise

Every 30 days

Every 5 days

Minimum Browser Cache TTL (Page Rules)

2 minutes

30s

Minimum Browser Cache TTL (Cache Rules)

2 hours

1s

Default Browser Cache TTL

4 hours

4 hours

Cache Analytics

no

yes

Retention period

N/A

30 days

Cache key (Cache deception armor)

yes

yes

Cache key (Cache by device type)

yes

yes

Cache key (Sort query string)

yes

yes

Cache key (Sort Query string)

yes

yes

Cache key (Query string)

no

yes

Cache key (Headers)

no

yes

Cache key (Cookie)

no

yes

Cache key (Host)

no

yes

Cache key (User features)

no

yes

Cache Reserve

yes

yes

Cache Rule

10 rules

125 rules

Cache by status code

no

yes

Crawler Hints

yes

yes

CSAM Scanning Tool

yes

yes

Development mode

yes

yes

Minimum Edge Cache TTL

yes

yes

ETag Headers

yes

yes

Purge cache

URL

URL, Hostname, Tag, or Prefix

Query string sort

no

yes

Tiered cache

yes

yes

Tiered cache (Smart Topology)

yes

yes

Tired cache (Generic Global Topology)

no

yes

Tiered cache (Regional Tiered Cache)

no

yes

Tiered cache (Custom Topology)

no

yes

Vary for images

no

yes

2.Default cache behavior:

Cloudflare tôn trọng header cache-control của origin. Logic hoạt động của Cloudflare:

Không cache nếu:

  • Tài nguyên mang tính riêng tư hoặc nhạy cảm (private, no-store, hoặc Set-Cookie).

  • Tài nguyên yêu cầu xác thực lại mỗi lần sử dụng (no-cache, max-age=0).

  • Yêu cầu không phải GET (vì có thể làm thay đổi dữ liệu).

Cache nếu:

  • Tài nguyên được đánh dấu public và có thời gian hết hạn rõ ràng (max-age > 0 hoặc Expires trong tương lai).

  • Không có yếu tố nào ngăn cản việc cache.

circle-info

Khi server gốc không gửi header Cache-Control, Cloudflare sẽ quyết định có nên cache tài nguyên hay không dựa vào HTTP status code của phản hồi từ server.

circle-info

Khi cả max-age Expires cùng được thiết lập, Cloudflare sẽ ưu tiên max-age:


3. Header của Cloudflare cache responses về:

Header CF-Cache-Status được Cloudflare sử dụng để thông báo trạng thái cache của tài nguyên.

Served by Cloudflare

HIT

Tài nguyên được tìm thấy trong bộ nhớ đệm (cache) của Cloudflare và được phục vụ trực tiếp từ cache.

STALE

Tài nguyên được phục vụ từ cache dù đã hết hạn, vì Cloudflare không thể kết nối với server gốc để lấy phiên bản cập nhật.

NONE

Tài nguyên không đủ điều kiện để được cache hoặc phản hồi không liên quan đến cache.

Một quy tắc tường lửa ứng dụng web (WAF) chặn yêu cầu trước khi cache được kiểm tra.

Redirect Rule hoặc Always Use HTTPS trước khi chuyển tới Cache

Served by Origin

DYNAMIC/BYPASS

Tài nguyên động , nhảy cảm hoặc cài đặt Cloudflare không yêu cầu cache.

MISS

Tài nguyên không có trong cache của Cloudflare và phải được yêu cầu từ server gốc.

REVALIDATED

Tài nguyên cache đã hết hạn, được xác thực lại và vẫn hợp lệ. If-Modified-Since header hoặcIf-None-Match header.

EXPIRED

Tài nguyên đã hết hạn và được yêu cầu từ server gốc.

Last updated