Соответствующим разделом спецификации Cache Storage API является 5.4.2 . (Хотя это относится к методу matchAll()
объекта Cache
, это то, что в конечном итоге называется "под капотом", когда вы делаете caches.match()
.
Особое отношение к вашему вопросу имеет шаг 2:
Если запрос необязательного аргумента не опущен, то:
Если request
является Request
объектом, то:
Установите r
на запрос request
.
Если метод r
не GET
и options.ignoreMethod
ложно, вернуть
Обещание разрешено с пустым массивом.
Иначе, если запрос является строкой, то:
- Установить
r
на соответствующий запрос результата вызова начальной
значение Request
в качестве конструктора с request
в качестве аргумента. Если это
выдает исключение, возвращает обещание, отклоненное с этим исключением.
Подводя итог, можно сказать, что самое большое отличие состоит в том, что передача объекта Request
в качестве первого параметра может привести к сбою match()
, если Request
имеет method
чего-то отличного от 'GET'
. Может быть, это то, что вы сталкиваетесь.
Кроме этого, два подхода должны быть в основном одинаковыми, хотя передача Request
немного более эффективна, поскольку браузеру не нужно неявно создавать Request
объект на основе строки.