Use Case : Bypass Cache chứa Cookie hoặc Authorzation

Trường hợp khi tạo rule Cache Everything cho website để tăng hiệu suất:

Có thể vì một số trang web không đặt trường header Cache-control : no-store / must-revalidate thì có thể Cloudflare sẽ cache tất cả và trả về status HIT

Ví dụ:

Trên Cloudflare tạo template rule Cache Everything:

Khi có login vào thì nó sẽ cache tại session user Hoidanit trên cloudflare trả về status HIT ⇒ vậy nếu người khác login vào trang này nó trả về user Hoidanit cache trên cloudflare không ? Tôi sẽ thử vào trình duyệt khác không login user Hoidanit truy cập vào URL này sẽ nó trả về gì

Vâng tôi vào được user Hoidanit vào tui vào thử Users thì tui có quyền của Hoidanit

Nhưng về cơ bản tôi không lấy được cookie của Hoidanit , tôi chỉ thấy được dashboard user Hoidanit hiện thị vì nó đc cache tất cả trên Cloudflare. Vậy làm gì ?

Cách 1 : Thêm header cache-control : no-store / must-revalidate đi với max-age ( ko thành công )

  1. Tắt rule Cache everything

  2. thêm header cho pages private cho user

  3. hãy đảm bảo Purge Cache hoặc Development Mode

Kết quả : khi có rule cache every thing thì nó sẽ ghi đè Cache-control là public , max-age = browser TTL mặc kệ no-store và trả giá trị cache-status MISS tuy nhiên nó vẫn phục vụ lại cache cloudflare và trả về user Hoidanit mặc dù ko có JWT của Hoidanit

  1. Tạo rule Bypass xếp thứ tự phía sau rule cache everything

  1. xóa cache bằng Purge Cache hoặc bật Development Mode

kết quả : không bị ghi đè Cache-control và trả về status DYNAMIC ⇒ Cloudflare sẽ không cache lại

Không dùng header cache-control : no-store , private , must-revalidate

Kết quả : trả về status DYNAMIC ⇒ cloudflare ko cache

Last updated