2012-01-27 29 views
5

Hiện tại tôi đang cố gắng giảm thiểu 304 yêu cầu cho trang web của mình. Tôi đã thực hiện những đề nghị kêu gọi ở đây:Sự cố tối thiểu hóa 304 yêu cầu

Asking browsers to cache as aggressively as possible

Tuy nhiên không có vấn đề gì tôi làm một số hình ảnh từ chối được kéo từ bộ nhớ cache mặc dù họ cũng tương tự như những người khác mà bị kéo. Ngay bây giờ chúng tôi đang sử dụng IIS 7.5 và chrome để xem lưu lượng mạng.

Dưới đây là một ví dụ về phản ứng ban đầu cho hình ảnh, btn-blue.png, mà sẽ kéo từ bộ nhớ cache:

Accept-Ranges:bytes 
Content-Length:49585 
Content-Type:image/png 
Date:Fri, 27 Jan 2012 16:02:26 GMT 
ETag:"26cb96cdccc1:0" 
Expires:Sat, 31 Dec 2012 00:00:00 GMT 
Last-Modified:Thu, 26 Jan 2012 20:49:46 GMT 
Server:Microsoft-IIS/7.5 
X-Powered-By:ASP.NET 

Dưới đây là một ví dụ về các tiêu đề phản ứng cho hình ảnh, topnav- blue-poweredbyipipeline.png, sẽ không bao giờ lấy từ bộ nhớ cache:

Accept-Ranges:bytes 
Content-Length:2680 
Content-Type:image/png 
Date:Fri, 27 Jan 2012 16:02:17 GMT 
ETag:"b85767a6cdccc1:0" 
Expires:Sat, 31 Dec 2012 00:00:00 GMT 
Last-Modified:Thu, 26 Jan 2012 20:49:47 GMT 
Server:Microsoft-IIS/7.5 
X-Powered-By:ASP.NET 

Bất kỳ ý tưởng nào sẽ kéo và người kia sẽ không?

+0

Ý của bạn là "tối đa" 304 câu trả lời? Bạn cần phải xem xét thêm các tiêu đề liên quan đến bộ nhớ đệm vào phản hồi (có một vài trong số chúng, được xử lý khác nhau bởi các trình duyệt khác nhau), sau đó ETag và Hết hạn cũng có liên quan. –

+0

Thực ra tôi đang tìm cách làm cho trình duyệt không cần phải gọi máy chủ. Chỉ cần kéo nó từ bộ nhớ cache. Ngay bây giờ nó đang nhận được một tin nhắn 304 trở lại nhưng tôi đã hy vọng rằng nó sẽ không phải thực hiện cuộc gọi đó ở nơi đầu tiên. –

+0

Trình duyệt phải tải xuống nội dung sống ở bất kỳ url cụ thể nào ít nhất một lần. Đó là vào máy chủ để "yêu cầu" trình duyệt để cache nó (trong khi cũng chỉ định "như thế nào" và "trong bao lâu"), và nó là vào trình duyệt để tôn trọng điều đó. Máy chủ cung cấp các hướng dẫn này thông qua các tiêu đề phản hồi (một nghiên cứu riêng biệt; tôi chỉ cung cấp cho bạn các gợi ý) và tôi chắc chắn rằng tất cả các trình duyệt phổ biến sẽ tôn trọng các hướng dẫn đó mà không nói dối bạn. –

Trả lời

5

Vì vậy, chúng tôi đã tìm ra lý do tại sao điều này xảy ra. Hóa ra nếu bạn sử dụng nút Enter để điều hướng đến một trang web, Chrome sẽ sử dụng bộ nhớ cache của nó một cách tích cực. Nếu bạn sử dụng nút làm mới, Chrome sẽ thực hiện cuộc gọi cho hầu hết mọi phần tử.

0

Mọi thứ trong bài đăng khác mà bạn đã liên kết đều có tiêu đề Cache-Control: max-age =. Bạn đã thử chưa Tôi không nghĩ rằng hết hạn và etag là đủ, tôi nghĩ rằng bạn cần Cache-Control cũng có, nhưng tôi đã không thực sự thử nghiệm nó.

+0

Trên thực tế, tôi cũng đã cố gắng sử dụng Cache-Control nhưng tôi cũng nhận được kết quả tương tự. Tôi không nghĩ rằng tôi có thể nhận được IIS để sử dụng cả hai nhưng nếu bạn biết một cách tôi muốn thử! –

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