2012-09-05 28 views
8

Theo Firebug, sau đây là các tiêu đề phản ứng lần đầu tiên tài nguyên được lấy ra:Tại sao Firefox không gửi tiêu đề If-Modified-Since?

Accept-Ranges bytes 
Cache-Control public, max-age=86400 
Content-Language en 
Content-Length 232 
Content-Location http://localhost/myapp/cacheTest.html 
Content-Type text/html; charset=WINDOWS-1252 
Date Wed, 05 Sep 2012 15:59:31 GMT 
Last-Modified Tue, 01 May 2012 05:00:00 GMT 
Server Restlet-Framework/2.0.3 
Vary Accept-Charset, Accept-Encoding, Accept-Language, Accept 

tôi bấm đi và bấm trở lại, và đây là là những tiêu đề yêu cầu gửi đến máy chủ:

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language en-us,en;q=0.5 
Connection keep-alive 
Host localhost 
Referer http://localhost/myapp/cacheTest2.html 
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0 

Và vì vậy, tự nhiên, máy chủ không thể gửi 304 như tôi muốn, và thay vào đó gửi toàn bộ tài nguyên một lần nữa.

Điều này đã xảy ra trong Firefox 14 và tôi nghĩ đó có thể là lỗi, vì vậy tôi đã nâng cấp. Nhưng nó vẫn đang xảy ra trong Firefox 15. Chrome không có vấn đề gì.

Tôi đã thử cả hai có và không có tiêu đề "Hết hạn", nó không có sự khác biệt. Firefox chỉ từ chối gửi tiêu đề If-Modified-Since.

+0

FWIW, trong Firefox, nếu bất kỳ tiêu đề yêu cầu nào phản hồi được đặt thành VARY bằng các thay đổi, Firefox sẽ không gửi tiêu đề If-Modified-Since theo lý thuyết (sai) mà máy chủ có thể hiểu sai và trả về 304 mà không đánh giá các tiêu đề yêu cầu Vary'ing. – EricLaw

Trả lời

32

Được rồi, tôi cảm thấy giống như một doofus nhưng đã quyết định đặt niềm tự hào của tôi sang một bên, và thay vì chỉ xóa câu hỏi này, cho biết những gì các giải pháp là trong trường hợp bất cứ ai khác đã từng làm điều tương tự ...

Ngày xửa ngày xưa một thời gian, để kiểm tra một cái gì đó, tôi đã tắt bộ nhớ đệm trong Firefox. Tôi bật nó trở lại, và bây giờ nó đang gửi tiêu đề.

+3

Tôi sẽ cung cấp cho bạn một upvote cho sự trung thực của bạn :) –

+2

+1 Chỉ cần có cùng một "vấn đề" –

+0

+1 từ tôi quá, vì lý do tương tự :) –

2

Đối với tôi, vấn đề hóa ra là ngày Last-Modified trong phản hồi tôi gửi không chính xác RFC 1123. Chrome không bận tâm; nó vui vẻ gửi dấu thời gian không đúng của tôi trở lại trong tiêu đề If-Modified-Since. Firefox, tuy nhiên, lặng lẽ bỏ qua nó.

Tôi có thể thấy từ các tiêu đề của bạn, đây không phải là lý do trong trường hợp của bạn, nhưng tôi đăng câu trả lời này, vì phải mất một lúc để tôi nhận ra đây là vấn đề, và có thể, một ngày nào đó, ai đó khác sẽ có cùng một vấn đề.

Đây là dưới Linux, FWIW (Mint 17, chính xác) nhưng tôi hy vọng cả hai trình duyệt sẽ hoạt động theo cùng một cách trong các hệ điều hành khác.

0

một lý do khác có thể khiến yêu cầu bộ nhớ cache không phải là bộ nhớ cache là nếu đĩa đầy. ít nhất là trên OSX.

điều này thật khó hiểu vì safari tại điểm đó vẫn lưu trữ đúng yêu cầu và firefox vì ít nhất có thể lưu vào bộ nhớ cache các yêu cầu trong bộ nhớ.

xóa bộ nhớ cache và giúp một số dung lượng trên đĩa giúp.

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