Tôi hiểu rồi. Google Chrome bỏ qua Cache-Control
hoặc Expires
tiêu đề nếu bạn thực hiện một yêu cầu ngay lập tức sau khi một yêu cầu khác với cùng URI trong cùng một tab (bằng cách nhấn vào nút refresh, bấm F5 chìa khóa hoặc nhấn lệnh + R). Nó có thể có một thuật toán để đoán những gì người dùng thực sự muốn làm.
Cách kiểm tra tiêu đề Cache-Control
là trả lại tài liệu HTML có liên kết đến chính nó. Khi nhấp vào liên kết, Chrome sẽ phân phối tài liệu từ bộ nhớ cache. Ví dụ, đặt tên sau tài liệu self.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test Page</title>
</head>
<body>
<p>
<a href="self.html">Link to the same page.</a>
If correctly cached, a request should not be made
when clicking the link.
</p>
</body>
</html>
Một lựa chọn khác là để sao chép URL và dán nó vào cùng một tab hoặc tab khác.
CẬP NHẬT: Trên một Chrome post published on January 26, 2017, nó được mô tả là những gì các hành vi trước và làm thế nào nó được thay đổi bằng cách thực hiện chỉ kiểm tra hợp lệ của tài nguyên chính, nhưng không phải của phụ nguồn:
Người dùng thường tải lại vì trang bị hỏng hoặc nội dung có vẻ cũ. Hành vi tải lại hiện có thường giải quyết các trang bị hỏng, nhưng nội dung cũ không được giải quyết một cách hiệu quả bằng cách tải lại thường xuyên, đặc biệt là trên thiết bị di động. Tính năng này ban đầu được thiết kế vào những thời điểm các trang bị hỏng khá phổ biến, vì vậy việc xử lý cả hai trường hợp sử dụng cùng một lúc là hợp lý. Tuy nhiên, mối quan tâm ban đầu này hiện đã trở nên ít liên quan hơn vì chất lượng của các trang web đã tăng lên. Để cải thiện trường hợp sử dụng nội dung cũ, Chrome hiện có hành vi tải lại đơn giản để chỉ xác thực tài nguyên chính và tiếp tục tải trang thông thường. Hành vi mới này tối đa hóa việc sử dụng lại tài nguyên được lưu trong bộ nhớ cache và dẫn đến độ trễ, mức tiêu thụ năng lượng và mức sử dụng dữ liệu thấp hơn.
Trong một Facebook post also published on January 26, 2017, nó được đề cập rằng họ tìm thấy một piece of code là Chrome làm mất hiệu lực mọi nguồn lực cache sau một yêu cầu POST:
chúng tôi thấy rằng Chrome sẽ hợp lệ lại mọi nguồn lực trên các trang đã được nạp từ làm một yêu cầu POST.Nhóm Chrome cho chúng tôi biết lý do cho điều này là yêu cầu POST có xu hướng là các trang thực hiện thay đổi - như mua hàng hoặc gửi email - và người dùng sẽ muốn có trang cập nhật nhất.
Có vẻ như đây không phải là trường hợp nữa.
Cuối cùng, nó được mô tả rằng Firefox được giới thiệu Cache-Control: immutable
hoàn toàn dừng lại kiểm tra hợp lệ các nguồn lực:
Firefox thực hiện một đề nghị từ một trong những kỹ sư của chúng tôi để thêm một tiêu đề bộ nhớ cache-điều khiển mới cho một số tài nguyên để nói với trình duyệt rằng tài nguyên này sẽ không bao giờ được xác nhận lại. Ý tưởng đằng sau tiêu đề này là nó là một lời hứa thêm từ nhà phát triển cho trình duyệt rằng tài nguyên này sẽ không bao giờ thay đổi trong suốt thời gian tối đa. Firefox đã chọn để thực hiện chỉ thị này dưới dạng điều khiển bộ nhớ cache: tiêu đề không thay đổi.
Tôi hy vọng điều này sẽ giúp gỡ rối các bí ẩn tải lại.
Tôi đang gặp sự cố tương tự. Chrome dường như hoàn toàn bỏ qua các tiêu đề bộ nhớ đệm. –
Tôi đã sử dụng tối đa 10 giây cho mục đích thử nghiệm và * không có gì * từng làm việc, tuy nhiên nếu tôi làm 30 giây thì mọi thứ sẽ hoạt động như mong đợi. Chrome dường như có thời gian bộ nhớ cache tối thiểu, dưới thời gian đó sẽ bị bỏ qua. – user3338098
Tiêu đề của câu hỏi này là sai. Nó phải là "Cache-Control", không phải "Control-Cache";) –