Tôi có một trang tải rất nhiều hình ảnh, css và javascript. Tôi đã thêm một tiêu đề hết hạn trong tương lai xa và đặt Cache-Control thành công khai trên các phụ thuộc bên ngoài này để chúng được lưu trữ. Nhưng mỗi khi tôi làm một bài đăng/chuyển hướng/nhận chrome cố gắng để tải lại. Hành vi này rất giống với tải lại trang. Tôi đã thêm ETags và xử lý tiêu đề If-None-Match giúp một chút, nhưng nó vẫn tạo ra quá nhiều yêu cầu vô ích.Tải lại toàn bộ trang trên Đăng/Chuyển hướng/Bỏ qua kiểm soát bộ nhớ cache
Làm cách nào để yêu cầu chrome và safari lấy tệp từ bộ nhớ cache?
chrome NOK
safari NOK
firefox OK
ie OK
Xem thêm Full page reload on Post/Redirect/Get ignoring cache control trên diễn đàn hỗ trợ của google.
Làm rõ:
Tôi không muốn trình duyệt để yêu cầu image1.png
hai lần. Nó sẽ được lưu trữ.
200 GET page1.html
200 GET image1.png (Cache-Control: public, Expires and ETag)
302 POST action.asp (form submitted from page1.html, redirects)
200 GET page2.html
304 GET image1.png (If-None-Match)
Ví dụ:
tôi đã tạo ra một ví dụ đơn giản để minh họa cho vấn đề.
Headers:
Các tiêu đề tôi gửi với hình ảnh là:
HTTP/1.1 200 OK
Date: Fri, 18 Jun 2010 11:30:22 GMT
Server: Apache
Cache-Control: public, max-age=86400
Expires: Sat, 19 Jun 2010 11:30:24 GMT
Etag: "123"
Content-Length: 866
Content-Type: image/png
nào nên làm cho nó được lưu trữ trong 24 giờ. Không có Vary: * hoặc bất cứ điều gì như thế.
Cập nhật: Hành vi này hiện cũng có trong Safari Mobile trên iOS 4. Một hồi quy khủng khiếp trong tốc độ tải trang.
Cập nhật: Có một thông báo lỗi về vấn đề này trong lỗi webkit. Bug 38690 - Submitting a POST that leads to a server redirect causes all cached items to redownload
Cập nhật: Vấn đề vẫn tồn tại trên iOS 4.0.1
Cập nhật: Vấn đề vẫn tồn tại trên iOS 4,1
Cập nhật: Vấn đề vẫn tồn tại trên iOS 4.2
Cập nhật: Vấn đề vẫn tồn tại trên iOS 4.2.1 và trong Chrome từ phiên bản 6 đến 9.
Cập nhật: Có một báo cáo lỗi về vấn đề này trong dự án Chromium.(Bạn có thể sao nó thể hiện bạn quan tâm) Issue 68621: Post/Redirect/Get ignoring cache instructions
Cập nhật: Vấn đề vẫn tồn tại trên Chrome từ phiên bản 6 đến 10 Nó bây giờ là một lỗi 9 tháng tuổi.
Cập nhật: Sự cố được khắc phục từ 2011-03-21 19:33:07 PST. Điều này được phản ánh trong hành vi của chrome 12 (canary).
Đây là vấn đề về webkit, chứ không phải vấn đề cụ thể với Chrome. –
@Dan, tôi biết, nhưng tôi mong các chàng trai google sửa lỗi này trong một trong nhiều bản phát hành của họ. Có sẵn bản vá nhưng chưa có bản vá nào trong chrome. –
Tôi nghĩ rằng các bản vá gây ra một hồi quy, đó là lý do tại sao nó không được chấp nhận? –