Làm cách nào để ngăn trình duyệt của khách hàng hiển thị phiên bản được lưu trong bộ nhớ cache của một trang, vì vậy nó luôn phải thực hiện GET khi khách truy cập truy cập trang?Trình duyệt tiếp tục hiển thị phiên bản được lưu trong bộ nhớ cache của nó. Tôi muốn luôn luôn buộc GET
Tôi đang sử dụng trang trí @never_cache của Django trong chế độ xem, có thêm "Cache-Control: max-age = 0" vào tiêu đề HTTP GET. Tuy nhiên khi tôi truy cập trang (trong Google Chrome và Firefox, các trình duyệt duy nhất mà tôi đã thử nghiệm cho đến nay), phiên bản được lưu trong bộ nhớ cache chắc chắn được hiển thị. (Xác nhận bằng cách truy cập vào tab Network cho yêu cầu, trong đó báo cáo "200 OK (từ bộ nhớ cache)".)
Nếu tôi bây giờ click vào nút Refresh, nó sẽ làm cho tươi nội dung từ máy chủ (Network tab cho yêu cầu cho biết "200 OK" và các tiêu đề như được hiển thị bên dưới.)
Thay cho cài đặt "Cache-Control: max-age = 0" Tôi cũng đã thử đặt tham số tiêu đề HTTP "Hết hạn" thành là một ngày trong quá khứ. Cái này cũng không làm việc.
Request Method:GET
Status Code:200 OK
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
If-Modified-Since:Fri, 17 Feb 2012 15:25:21 GMT
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
Response Headers
Cache-Control:max-age=0
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Fri, 17 Feb 2012 15:55:11 GMT
ETag:"[removed]"
Expires:Fri, 17 Feb 2012 15:55:11 GMT
Last-Modified:Fri, 17 Feb 2012 15:55:11 GMT
Server:nginx
Transfer-Encodindg:chunked
Vary:Cookie,Accept-Encoding
X-Handled-By:127.0.0.1:8000
Có sử dụng "no-cache" để thay thế sửa chữa vấn đề? Xem ở đây: http://stackoverflow.com/questions/1046966/whats-the-difference-between-cache-control-max-age-0-and-no-cache không chắc chắn làm thế nào để thiết lập mà từ Django mặc dù. –
Tôi chưa thử điều đó. Làm như vậy ngay bây giờ ... – ram1
Điều đó không hiệu quả, Graham. Tôi đặt tiêu đề Cache-Control thành "no-cache" và Chrome vẫn cung cấp phiên bản được lưu trong bộ nhớ cache của trang, ngăn chặn yêu cầu GET. Một lần nữa, tôi có thể nhấp vào nút Làm mới của Chrome vào thời điểm này để nhận nội dung mới - nhưng dĩ nhiên tôi muốn ngăn người dùng phải thực hiện điều đó. – ram1