2011-06-08 32 views
7

Khi đọc http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html, tôi thấy rằng thuật toán bộ nhớ đệm phức tạp hơn tôi nghĩ.Cách hoạt động của bộ nhớ cache của trình duyệt Nếu đồng hồ cục bộ không phù hợp với Đồng hồ máy chủ?

Theo RFC2616, yêu cầu HTTP được gửi nếu phản hồi mới. và

response_is_fresh = (freshness_lifetime > current_age) 

Các current_age thể được bắt nguồn từ max-age hoặc Expires tiêu đề, mà cả hai không có gì để làm với đồng hồ địa phương. Tuy nhiên, việc tính toán freshness_lifetime tùy thuộc vào đồng hồ địa phương.

Vì vậy, nếu đồng hồ địa phương của trình duyệt không nhất quán với đồng hồ ở phía máy chủ. Có thể là bộ đệm ẩn HTTP không miễn yêu cầu không cần thiết được gửi không?

Cảm ơn

+0

Một câu hỏi hay. – Orbling

+0

Bây giờ, tôi giả sử các trình duyệt chỉ tính toán current_age như bây giờ - "phản hồi thời gian được nhận". Nó rất dễ dàng và đơn giản. Dù sao, ứng dụng không nên phụ thuộc vào hành vi của nó trên bộ nhớ cache. –

Trả lời

2

đồng hồ của họ không cần phải được đồng bộ, nhưng khách hàng cần một chiếc đồng hồ làm việc để có thể xác định tuổi của một tài nguyên lưu trữ và kết hợp mà chống lại max-age. Nếu max-age không có trong phản hồi, khách hàng có thể tính toán nó bằng cách so sánh các tiêu đề DateExpires tiêu đề với nhau.

Tuy nhiên, nếu khách hàng bị lệch đồng hồ, bộ nhớ cache sẽ bị hỏng và tài nguyên có thể được lưu trữ không chính xác vì tuổi của họ không thể xác định được một cách đáng tin cậy.

Các vấn đề liên quan