tôi đang cố gắng thêm etag
xác minh bộ nhớ cache dựa trên ứng dụng web mà tôi đã phát triển chạy trên Apache thông qua proxy ngược NGINX. Ứng dụng web được viết bằng Perl. Trong tập lệnh Perl, tôi kiểm tra $ENV{'HTTP_IF_NONE_MATCH'}
tiêu đề và sau đó kiểm tra etag
trong đó, nếu nó tồn tại. Nếu tôi truy cập ứng dụng qua cURL, nó sẽ hoạt động:
timothybutler@timothys-MacBook-Pro ~ % curl -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 200 OK
Máy chủ: nginx/1.21.4
Ngày: T6, 12 tháng 11 năm 2021 18:06:37 GMT
Loại nội dung: âm thanh/mpeg
Độ dài nội dung: 16665729
Kết nối: giữ nguyên
Kiểm soát thay thế: không có bộ đệm
Kiểm soát bộ đệm: private,max-age=864000
Từ khóa: "1635825322"
Cho rằng etag
quay lại qua cURL, tôi nhận được kết quả như mong đợi:
timothybutler@timothys-MacBook-Pro ~ % curl -H 'If-None-Match: "1635825322"' -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 304 Không được sửa đổi
Máy chủ: nginx/1.21.4
Ngày: T6, 12 tháng 11 năm 2021 18:19:29 GMT
Kết nối: giữ nguyên
Kiểm soát bộ đệm: riêng tư, tuổi tối đa=864000
Từ khóa: "1635825322"
Tuy nhiên, quá trình này bị hỏng nếu tôi dùng thử trong Chrome. Báo cáo Chrome đang gửi Nếu-Không-Khớp: "1635825322"
là một trong những tiêu đề khi tôi làm mới trang, nhưng máy chủ của tôi không đặt HTTP_IF_NONE_MATCH
biến môi trường cho yêu cầu đó trái ngược với yêu cầu đến qua cURL. Nếu tôi kết xuất tất cả hàm băm %ENV, If-Match-None
tiêu đề và của nó etag
đơn giản là không xuất hiện dưới bất kỳ hình thức nào khi Chrome đưa ra yêu cầu.