Vary: * có ý nghĩa gì với bộ nhớ đệm proxy chia sẻ
Hiểu vì sao một phản hồi đã lưu có Vary: * không thể khớp với yêu cầu sau đó qua việc chọn bộ nhớ đệm chia sẻ thông thường.
Phản hồi đã lưu có Vary: * luôn thất bại trong phép thử khớp Vary thông thường. Proxy không thể kết luận rằng một yêu cầu sau đó được hưởng cùng một biểu diễn chỉ vì URL và các tiêu đề nhìn thấy được của nó trông giống nhau.
Hãy so sánh điều đó với:
Vary: Accept-Encoding
Đây là tên một trường yêu cầu mà bộ nhớ đệm có thể so sánh. Ký tự đại diện cho biết kiểu so sánh tiêu đề này không đủ. Tăng độ tươi mới hay kích thước bộ nhớ đệm không cung cấp thông tin chọn lựa còn thiếu.
Sự khác biệt nằm giữa lưu trữ và tái sử dụng. Bộ nhớ đệm có thể giữ thông tin hữu ích cho việc xác nhận, nhưng biến thể có ký tự đại diện đã lưu không trở thành phản hồi khớp thông thường có thể đáp ứng yêu cầu tiếp theo. Proxy thường phải liên hệ với nguồn gốc thay vào đó.
Hãy để chính sách phản hồi mô tả ứng dụng
Nếu bạn kiểm soát nguồn gốc và biểu diễn thực sự chỉ thay đổi theo các tiêu đề yêu cầu có thể nhận diện, hãy đặt tên chính xác cho các trường đó. Đừng thay ký tự đại diện bằng Accept-Encoding chỉ vì ví dụ đó có thể lưu đệm: ứng dụng cũng có thể thay đổi theo ngôn ngữ, quyền truy cập hoặc thông tin ngoài các tiêu đề đó.
Nếu nội dung là riêng tư hoặc không nên lưu trữ, hãy thể hiện điều đó qua chính sách bộ nhớ đệm tương ứng. Việc bỏ Vary không làm cho nội dung cá nhân hóa an toàn để chia sẻ.
Cấu hình vary_ignore_expire của Squid liên quan đến xử lý hết hạn cho các phản hồi thay đổi và hành vi HTTP lịch sử. Đó không phải một công tắc khiến ký tự đại diện khớp.