Cache Storage API, не может вернуть заголовок - PullRequest
0 голосов
/ 26 апреля 2019

Я хотел бы проверить максимальный возраст, поэтому я удаляю элементы из кэша, когда они стареют, но по какой-то причине я не могу получить свой собственный заголовок.

  export function cacheResponse(url, response) {
          caches.open('my-cache').then(function(cache) {
            cache.put(url, new Response(JSON.stringify(response), {
              headers: {
                'Cache-Control': 'max-age=1',
                'Content-Type': 'application/json;charset=UTF-8'
              }
            }));
          });
        }

cacheResponse('/hello', {hello: "world"})

Я вижу, как это работает на вкладке Application в Chrome, и я вижу эти 2 заголовка в предварительном просмотре, но когда я вытаскиваю элемент обратно, объект headers становится пустым.

cache.match(url).then(async function(object) {
  console.log(object.headers) // null
  var body = await object.clone().json(); // {hello: "world"}
})

Объект выглядит так

object: Response
body: ReadableStream
bodyUsed: false
headers: Headers
__proto__: Headers
ok: true
redirected: false
status: 200
statusText: ""
type: "default"
url: ""

Похоже, я должен иметь возможность искать заголовки при вызове match () нет?

1 Ответ

0 голосов
/ 01 мая 2019

Это должно работать;вы должны иметь возможность вызвать response.headers.get('cache-control') для получения значения (при условии, что это ответ того же происхождения).

Вот фрагмент кода, который я только что протестировал и который работал при запуске в консоли JS:

async function test() {
  const constructedResponse = new Response('test', {
    headers: {'cache-control': 'max-age=1'}
  });

  const cache = await caches.open('test');

  cache.put('/test', constructedResponse);

  const matchedResponse = await cache.match('/test');

  console.log(`cache-control: ${matchedResponse.headers.get('cache-control')}`);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...