Mam stronę internetową, która zwraca następujący nagłówek kiedy dostęp do materiału:Przestawianie wartości „Cache-Control” w odpowiedzi 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
Korzystanie rozszerzenie do Chrome, chcę zmodyfikować ten response header
tak że materiał jest rzeczywiście buforowany zamiast marnować przepustowość.
Mam następujący przykładowy kod:
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']
);
Które poprawnie modyfikuje nagłówek do czegoś takiego (na podstawie console.log (wyjście)):
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
ale w oparciu o wszystkim Próbowałem to sprawdzić, nie widzę żadnych dowodów na to, że tak się stało:
- The
cache
nie zawiera wpisu do tego pliku - Zakładka nie wykazuje żadnych zmian w odpowiedzi HTTP (próbowałem go zmienić nawet w przypadku niewielkich modyfikacji, aby upewnić się, że nie jest to błąd, ale wciąż bez zmian).
Jedyne realne wskazówki mogę znaleźć są co sugeruje, że moje podejście nadal działa i ten paragraf na webRequest API documentation co sugeruje, że to nie będzie działać (ale nie wyjaśnia, dlaczego nie mogę dostać żadnych zmian):
Należy zauważyć, że interfejs API żądania internetowego przedstawia abstrakcję stosu sieci dla rozszerzenia. Wewnętrznie, jedno żądanie URL można podzielić na kilka żądań HTTP (na przykład w celu pobrania pojedynczych zakresów bajtowych z dużego pliku) lub może być obsługiwane przez stos sieci bez konieczności komunikowania się z siecią . Z tego powodu interfejs API nie przesyła końcowych nagłówków HTTP wysyłanych do sieci przez . Dla przykładu, wszystkie nagłówki związane z buforowaniem są niewidoczne dla rozszerzenia .
Nic nie działa (w ogóle nie mogę zmodyfikować HTTP response header
), więc myślę, że to moja pierwsza sprawa.
Jakieś sugestie na temat tego, gdzie mógłbym pójść źle lub jak znaleźć informacje o tym, co się tutaj dzieje?
Jeśli nie jest to możliwe, czy istnieją inne sposoby osiągnięcia tego, co próbuję osiągnąć?
Niestety to, czego się spodziewałem ... Czy znasz jakieś inne sposoby zmuszenia tych plików do przechowywania w pamięci podręcznej?Znalazłem serwery proxy takie jak 'squid' ale wydaje mi się, że dużo błądzę z siecią w moim systemie tylko po to, aby cache'ować pliki z jednej konkretnej witryny –
@BT Wybierz swój ulubiony serwer proxy, który dodaje właściwe nagłówki i użyj [' chrome .proxy'] (https://developer.chrome.com/extensions/proxy.html) API, aby skierować tę konkretną witrynę przez serwer proxy. –
Naprawdę szkoda, że nie można modyfikować buforowania z rozszerzenia. Czyniłoby to o wiele bardziej pomocnym, gdybyś mógł. –