Tôi nên gửi tiêu đề nào để hoàn toàn dừng tất cả các yêu cầu đến máy chủ sau khi nội dung được lưu trữ?
Chúng tôi có một máy chủ có độ trễ rất cao (Sigh, VMWare) nên ngay cả việc gửi HEAD
yêu cầu đến máy chủ cũng mất + 40ms.
Hiện tại đây là các tiêu đề được gửi / nhận;
Yêu cầu đầu tiên
Khách hàng gửi;
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Pragma: no-cache, no-cache, no-cache
Cache-Control: no-cache, no-cache, no-cache
Máy chủ trả lời;
HTTP/1.1 200 OK
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:51:51 GMT
Content-Type: text/plain
Vary: Accept-Encoding
Last-Modified: Tue, 31 Jan 2012 10:45:11 GMT
Content-Length: 14
Expires: Thu, 31 Jan 2013 14:51:51 GMT
Cache-Control: max-age=31536000
Vì vậy, nó sẽ gửi một tiêu đề Cache-Control
và Expires
được đặt thành 365 ngày trong tương lai. Thật không may, trong lần làm mới thứ hai, nó lại yêu cầu đối tượng với một If-Modified-Since
tiêu đề.
Yêu cầu lần thứ hai
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
If-Modified-Since: Tue, 31 Jan 2012 10:45:11 GMT
Cache-Control: max-age=0
Phản ứng;
HTTP/1.1 304 Not Modified
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:58:00 GMT
Vary: Accept-Encoding
Expires: Thu, 31 Jan 2013 14:58:00 GMT
Cache-Control: max-age=31536000
Thật không may do phần mềm proxy lỗi thời mà chúng tôi không thể sử dụng Keep-Alive
hoặc đặt bất kỳ máy chủ / proxy nào khác trước ứng dụng. Chúng tôi cũng không thể cải thiện hiệu suất của máy chủ và giảm độ trễ mạng. Tôi đã cố gắng tìm ra những tiêu đề nào chúng tôi có thể gửi để loại bỏ 301 yêu cầu. Tôi đã thử sử dụng ETags nhưng điều đó không có gì khác biệt, nó vẫn gửi một If-modified-since
tiêu đề. Tôi cũng đã thử xóa Last-Modified
tiêu đề nhưng điều đó chỉ gây ra yêu cầu GET tiêu chuẩn mà không có bộ đệm (Đã kiểm tra nhật ký, máy chủ vẫn nhận được yêu cầu).
Khách hàng là sự pha trộn của Firefox (hầu hết), IE 7, 8 và (một số) 9, Chrome và Safari nhưng hành vi này dường như xuất hiện trong tất cả các trình duyệt được thử nghiệm.
TL; DR;
Mạng khủng khiếp, tôi nên gửi tiêu đề gì để nói với khách hàng rằng đừng bao giờ gửi If-modified-since
yêu cầu đến máy chủ để xác thực bộ đệm của họ và giữ nội dung được lưu trong bộ nhớ cache cho đến khi Expires
tiêu đề được đáp ứng?
Tôi có thể thiếu một cái gì đó rõ ràng nhưng mọi thứ tôi cố gắng dường như mang lại kết quả tương tự.
Chúng tôi có một máy chủ NGINX ngồi trước máy chủ ứng dụng của chúng tôi để tôi có thể thêm / xóa bất kỳ tiêu đề nào nếu muốn. Proxy của chúng tôi không hỗ trợ Keep-Alive và họ không có cách nào cải thiện hiệu suất mạng hấp dẫn. Do thiết kế phần mềm khủng khiếp, ứng dụng web tải +100 tài nguyên trên mỗi lần tải trang (Yeah, phần mềm doanh nghiệp hút) với độ trễ ~ 40-50ms cho mỗi đối tượng.
text/plain
gì?