Cloudflare: Cache tĩnh HTML khi URL có Chuỗi truy vấn


10

Câu hỏi nhanh về 'người dùng mới' của CloudFlare dành cho bạn:

ĐẶT VẤN ĐỀ: Các trang HTML được cung cấp bởi máy chủ gốc của tôi không bao giờ thay đổi. Tất cả nội dung động được tải xuống qua JavaScript sau khi trang được tải trong trình duyệt của người dùng. Nội dung động do JavaScript tạo ra phụ thuộc một phần vào chuỗi truy vấn của URL nhưng bản thân chuỗi truy vấn không ảnh hưởng đến nội dung HTML được tải xuống ban đầu. Do đó, các URL sau đây đều tạo chính xác cùng một HTML từ nguồn gốc trước khi được JavaScript xử lý trong trình duyệt:

https://www.example.com/private/my-investments?port portfolioID = 296

https://www.example.com/private/my-investments?port portfolioID = 340

https://www.example.com/private/my-investments?port portfolioID=319

CÂU HỎI: Theo mặc định rằng CloudFlare không lưu trữ HTML, tôi sẽ xây dựng Quy tắc trang của mình như thế nào để một bản sao được lưu trong bộ nhớ cache của https://www.example.com/private/my-investments?[anyValue] được trả lại cho tất cả người dùng ? Đây là những gì tôi đã thử:

"CACHE MỌI THỨ:" Sử dụng chỉ thị 'Cache Mọi thứ' khiến HTML của tôi được lưu trong bộ nhớ cache (tốt) nhưng nó sử dụng toàn bộ chuỗi truy vấn như một phần của khóa bộ đệm (xấu). Vì vậy, nếu người dùng truy cập URL sau ...

https://www.example.com/private/my-investments?port portfolioID = 296

... và sau đó mười giây sau đó truy cập cùng một URL với một chuỗi truy vấn khác, như:

https://www.example.com/private/my-investments?port portfolioID = 340

... CloudFlare coi yêu cầu sau đó là bộ đệm MISS (cf-cache-status: MISS) và truy cập lại máy chủ gốc của tôi. Điều này mặc dù thực tế là HTML được trả về từ nguồn gốc giống hệt nhau cho cả hai URL.

"IGNORE QUERY CHUINGI CHUINGI CHUINGI:" Tôi nghĩ chắc chắn rằng tôi sẽ khắc phục vấn đề này bằng cách chọn tùy chọn "IGNORE QUERY STRING CACHING". Nhưng khi sử dụng tùy chọn này trong Quy tắc trang, không có HTML nào được lưu vào bộ đệm; Chỉ các tệp .js, .css và .png được lưu trữ. Và một lần nữa, nguồn gốc của tôi bị ảnh hưởng cho mỗi lần gọi dữ liệu HTML. :

Tôi cảm thấy như tôi phải thiếu một cái gì đó rõ ràng. Có suy nghĩ gì không?

CẬP NHẬT : Có một ý tưởng tôi muốn chạy theo bạn. Tôi có thể giải quyết vấn đề này bằng cách thay đổi lược đồ URL nội bộ của mình sang sử dụng '#' thay vì '?' Vì vậy, thay vì một URL như ...

https://www.example.com/private/my-investments?port portfolioID = 296

.. Tôi sẽ sử dụng một cái gì đó như:

https://www.example.com/private/my-investments#port portfolioID = 296

Điều này sẽ ngăn các tham số chuỗi truy vấn được truyền đến CloudFlare ... Bạn nghĩ gì?

Lễ hội


Sử dụng "#" thay vì "?" trong URL đã giải quyết vấn đề. Sysops có thể đi trước và xóa câu hỏi của tôi.
Festus Martingale

4
Những người khác có thể học hỏi từ những gì bạn đã tìm ra ở đây, vì vậy có lẽ bạn có thể cung cấp những gì bạn đã làm ở trên như một câu trả lời (với một chút công phu) và chấp nhận nó khi bạn có thể. Cảm ơn.
dan

Câu trả lời:


4

(Trả lời thêm cho @Festus Martingale để đánh dấu câu hỏi như đã trả lời).

Việc thay thế ?bằng một #vấn đề đã được giải quyết vì nó ngăn chặn chuỗi truy vấn được truyền đến cloudflare khi nó xuất hiện dưới dạng một đoạn băm.


Tên tôi là Festus. Tôi đã đánh dấu đây là một câu trả lời.
Festus Martingale
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.