Điều gì xảy ra nếu bạn không đặt tiêu đề kiểm soát bộ đệm?


11

Điều gì xảy ra nếu bạn không đặt cache-controltiêu đề? HTTP có chỉ định một hành vi mặc định mà khách hàng nên tuân theo hay là do khách hàng quyết định?

Trong Chrome, tôi đã thấy một số yêu cầu Javascript không có cache-controltiêu đề hiển thị dưới dạng 200 (from disk cache). Chrome có tối ưu hóa điều này không?

Trong IE, tôi đã thấy nó hiển thị như một 304 (not modified).

Làm thế nào để tôi hiểu điều này tốt hơn?


1
"không có tiêu đề bộ đệm" có nghĩa là không có tiêu đề Cache-Control hoặc thực sự không có tiêu đề bộ đệm? Kiểm soát bộ đệm không phải là tiêu đề duy nhất ảnh hưởng đến bộ nhớ đệm. Hầu hết các máy chủ web sẽ gửi các tiêu đề được sửa đổi lần cuối cho các tài sản tĩnh như các tệp Javascript.
Đài phun nước Tim

Câu trả lời:


16

Nếu không có Cache-Controltiêu đề và không có Expirestiêu đề, nhưng có một Last-Modifiedtiêu đề (mà hầu hết các máy chủ web gửi theo mặc định cho tài sản tĩnh), hầu hết các trình duyệt sẽ sử dụng độ mới heuristic để xác định thời gian lưu trữ tài sản đó.

Tính toán điển hình cho điều này (là một tính toán được đề xuất bởi RFC 7234 ) là:

(current time - last modified time) / 10

Vì vậy, ví dụ, nếu lần sửa đổi cuối cùng cho một hình ảnh nói rằng nó đã được thay đổi lần cuối 60 ngày trước, một trình duyệt có thể quyết định nó có thể sử dụng hợp lý phiên bản được lưu trong bộ nhớ cache của hình ảnh đó trong 6 ngày trước khi kiểm tra phiên bản mới.

Lưu ý rằng trong hầu hết các trường hợp, nếu bạn nhấn refresh, bạn đang yêu cầu trình duyệt tìm nạp phiên bản mới, vì vậy trong trường hợp đó logic này sẽ không được áp dụng.


Và nếu không có Last-Modifiedtiêu đề?
bertonc96
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.