Tại sao thuộc tính Cache-Control được gửi trong tiêu đề yêu cầu (máy khách đến máy chủ)?


163

Sau khi đọc về Cache-Controltrường của tiêu đề HTTP,

Tôi hiểu rằng các Cache-Controllĩnh vực trong tiêu đề HTTP response (máy chủ cho khách hàng) quy định cụ thể các chỉ thị cho trình duyệt trung gian proxy server / client về cách xử lý các phản ứng, bằng cách gửi các giá trị khác nhau cho các Cache-Controllĩnh vực: private, public, no-cache, hoặc no-storetrong tiêu đề phản ứng.

Nhưng tôi không hiểu tại sao chúng ta cần gửi Cache-Controlthuộc tính trong tiêu đề yêu cầu (máy khách đến máy chủ)?

Câu trả lời:


137

Cache-Control: no-cachethường được sử dụng trong tiêu đề yêu cầu (được gửi từ trình duyệt web đến máy chủ) để buộc xác thực tài nguyên trong các proxy trung gian. Nếu khách hàng không gửi yêu cầu này đến máy chủ, proxy trung gian sẽ trả về một bản sao của nội dung nếu nó còn mới (chưa hết hạn theo Expirehoặc max-agecác trường). Cache-Controlchỉ đạo các proxy này xác nhận lại bản sao ngay cả khi nó còn mới.


8
Có thể là quá muộn ở đây, nhưng ngoại trừ việc sử dụng khác là gì? Là trường tuổi tối đa được sử dụng cho mục đích nào?
Sam

Tại sao các trình duyệt hiện đại có xu hướng làm điều này? Họ không tin tưởng các proxy trung gian mặc dù họ hành xử theo tiêu chuẩn web ??
rogerdpack 17/2/2017

1
@rogerdpack không, bởi vì họ làm niềm tin cho họ, vì vậy họ gửi tiêu đề mà họ tin tưởng sẽ được vinh dự để cho biết rằng họ có một số lý do đặc biệt cho yêu cầu tươi mát lớn hơn hầu hết sử dụng cần.
Jon Hanna

1
@rogerdpack nếu bạn vừa làm một cái gì đó mà bạn biết sẽ thay đổi trạng thái và muốn phản ánh điều đó, sẽ là một trường hợp cổ điển.
Jon Hanna

7
@JonHanna Có lẽ bạn đã "vô hiệu hóa bộ nhớ cache" trong các công cụ Chrome Developer? : D
Gregory Magarshak

15

Một khách hàng có thể gửi một Cache-Controltiêu đề trong một yêu cầu để yêu cầu hành vi bộ đệm cụ thể, chẳng hạn như xác nhận lại, từ máy chủ gốc và bất kỳ máy chủ proxy trung gian nào dọc theo đường dẫn yêu cầu.


4

Ngoài câu trả lời ở trên,
có thể có một thiết lập trong đó thực hiện xâu chuỗi bộ đệm. Trong trường hợp đó, nếu yêu cầu đến bộ đệm đầu tiên khi nó không được thỏa mãn, nó có thể chuyển sang bộ đệm tiếp theo.

Do đó, để luôn nhận được phản hồi từ máy chủ, chúng tôi bao gồm kiểm soát bộ đệm trong các tiêu đề yêu cầu. Điều này sẽ đảm bảo rằng phản hồi luôn luôn từ máy chủ.


Bạn nói "Vì vậy, để luôn nhận được phản hồi từ máy chủ, chúng tôi bao gồm kiểm soát bộ đệm trong các tiêu đề yêu cầu. Điều này sẽ đảm bảo rằng phản hồi luôn luôn từ máy chủ." Giá trị của tiêu đề này sẽ thực hiện điều đó là gì?
Don nở

Cache-Control: no-cachesẽ nói với các proxy để đảm bảo rằng phản hồi được xác thực tất cả các cách.
mogsie
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.