2010-05-02 19 views
9

Sau khi đặt câu hỏi về sending “304 Not Modified” for images stored in the in the Google App Engine datastore, bây giờ tôi có câu hỏi về Cache-Control.Có OK để đặt "Kiểm soát bộ nhớ cache: công khai" khi gửi "304 không được sửa đổi" cho hình ảnh được lưu trữ trong kho dữ liệu

Ứng dụng của tôi hiện gửi Last-ModifiedEtag, nhưng theo mặc định, GAE alsto gửi Cache-Control: no-cache. Theo this page:

Các “no-cache” chỉ thị, theo RFC, nói với trình duyệt mà nó nên hợp lệ lại với máy chủ trước khi phục vụ trang từ cache. [...] Trong thực tế, IE và Firefox đã bắt đầu xử lý chỉ thị không có bộ nhớ cache như thể nó hướng dẫn trình duyệt không lưu vào bộ nhớ cache trang .

Như tôi DO muốn trình duyệt để bộ nhớ cache hình ảnh, tôi đã thêm dòng sau vào mã của tôi:

self.response.headers['Cache-Control'] = "public" 

Theo trang giống như trước:

Các “ kiểm soát bộ nhớ cache: công khai ”chỉ thị [...] cho trình duyệt và proxy [...] rằng trang có thể được lưu vào bộ nhớ cache. Điều này tốt cho các trang không nhạy cảm, khi bộ nhớ đệm cải thiện hiệu suất.

Câu hỏi đặt ra là liệu điều này có thể gây hại cho ứng dụng theo một cách nào đó không? nó sẽ là tốt nhất để gửi Cache-Control: must-revalidate để "ép" trình duyệt để hợp lệ lại (Tôi cho rằng đó là hành vi mà ban đầu được lý do đằng sau việc gửi Cache-Control: no-cache)

Chỉ thị này nhấn mạnh rằng trình duyệt phải hợp lệ lại trang chống lại máy chủ trước khi phục vụ nó từ bộ nhớ cache. Lưu ý rằng nó hoàn toàn cho phép bộ nhớ cache của trình duyệt trang.

Trả lời

1

Không cần thiết đặt Cache-Control: public trừ khi nội dung của bạn được bảo vệ bằng xác thực HTTP hoặc SSL.

Hãy thử đặt Cache-Control: max-age=nn (trong đó nn là số nguyên giây bạn muốn cache xem xét phản hồi mới). AppEngine nên xóa không có bộ nhớ cache.

0

Điều này không thể gây hại cho ứng dụng của bạn, rủi ro duy nhất được mô tả trong số tiền đó đối với các proxy công cộng (chẳng hạn như proxy được sử dụng bởi ISP). Nếu hình ảnh là bí mật hoặc người dùng cụ thể, bạn không muốn điều này xảy ra. Trong tất cả các trường hợp khác, bộ nhớ đệm chính xác là những gì bạn muốn.

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