Tôi có một trang web trả về header sau khi tôi truy cập vào tài liệu:Override các giá trị "Cache-control" trong một phản ứng HTTP
HTTP/1.1 200 OK
Date: Sat, 29 Jun 2013 15:57:25 GMT
Server: Apache
Content-Length: 2247515
Cache-Control: no-cache, no-store, must-revalidate, max-age=-1
Pragma: no-cache, no-store
Expires: -1
Connection: close
Sử dụng một phần mở rộng chrome, tôi muốn thay đổi response header
này để tài liệu thực sự được lưu trữ thay vì lãng phí băng thông.
Tôi có đoạn code mẫu sau:
chrome.webRequest.onHeadersReceived.addListener(function(details)
{
// Delete the required elements
removeHeader(details.responseHeaders, 'pragma');
removeHeader(details.responseHeaders, 'expires');
// Modify cache-control
updateHeader(details.responseHeaders, 'cache-control', 'max-age=3600;')
console.log(details.url);
console.log(details.responseHeaders);
return{responseHeaders: details.responseHeaders};
},
{urls: ["<all_urls>"]}, ['blocking', 'responseHeaders']
);
nào sẽ thay đổi một cách chính xác tiêu đề để một cái gì đó như thế này (dựa trên console.log() đầu ra):
HTTP/1.1 200 OK
Date: Sat, 29 Jun 2013 15:57:25 GMT
Server: Apache
Content-Length: 2247515
Cache-Control: max-age=3600
Connection: close
Nhưng dựa trên tất cả mọi thứ Tôi đã cố kiểm tra điều này, tôi không thể thấy bất kỳ bằng chứng nào cho thấy điều này đã thực sự xảy ra:
cache
không chứa mục nhập nào cho tệp này- Tab
Network
trongDeveloper Console
cho thấy không có thay đổi nào đối với phản hồi HTTP (Tôi đã thử thay đổi nó thành sửa đổi nhỏ gọn chỉ để đảm bảo rằng nó không phải là lỗi, nhưng vẫn không có thay đổi).
Các gợi ý thực duy nhất tôi có thể tìm được đó gợi ý rằng cách tiếp cận của tôi vẫn hoạt động và khoản này trên webRequest API documentation điều này gợi ý rằng điều này sẽ không hoạt động (nhưng không giải thích lý do tại sao tôi không thể nhận được bất kỳ sự thay đổi bất kỳ điều gì):
Lưu ý rằng API yêu cầu web trình bày sự trừu tượng của mạng ngăn xếp đến phần mở rộng. Bên trong, một yêu cầu URL có thể được chia thành một số yêu cầu HTTP (ví dụ để tìm nạp các dải byte riêng lẻ từ một tệp lớn) hoặc có thể được xử lý bởi ngăn xếp mạng mà không cần liên lạc với mạng. Vì lý do này, API không cung cấp tiêu đề HTTP cuối cùng được gửi tới mạng. Đối với ví dụ , tất cả tiêu đề có liên quan đến bộ nhớ đệm đều ẩn với tiện ích mở rộng .
Không có gì hoạt động (tôi không thể sửa đổi HTTP response header
) vì vậy tôi nghĩ đó là mối quan tâm đầu tiên của tôi.
Bất kỳ đề xuất nào tại nơi tôi có thể gặp sự cố hoặc làm thế nào để tìm kiếm những gì đang xảy ra ở đây?
Nếu không thể, có cách nào khác để đạt được những gì tôi đang cố đạt được không?
Thật không may những gì tôi mong đợi ... Bạn có biết cách nào khác để buộc các tệp này vào bộ nhớ cache không?Tôi đã tìm thấy các máy chủ proxy giống như 'mực 'nhưng chúng có vẻ như rất khó sử dụng với mạng trên hệ thống của tôi chỉ để lưu các tệp từ một trang web cụ thể –
@BT Chọn proxy yêu thích của bạn để thêm tiêu đề phù hợp và sử dụng [chrome] .proxy'] (https://developer.chrome.com/extensions/proxy.html) API để định tuyến trang web cụ thể đó thông qua proxy của bạn. –
Thực sự xấu hổ rằng bạn không thể sửa đổi bộ nhớ đệm từ tiện ích mở rộng. Sẽ làm cho nó hữu ích hơn nhiều nếu bạn có thể. –