"DOMException: запись не была найдена" при добавлении больших ответов в хранилище кеша

У меня проблема с хранением видео в Хранилище кешей. Он отлично работает, если видео имеет небольшой размер, но если его размер составляет около 100 МБ, я получаю эту ошибку:

DOMException: Entry was not found.

Я использую следующий код:

fetch(videoUrl).then(function(res) {
  var responseToCache = res.clone();
  caches.open('videos').then(function(cache) {
    var request = new Request('https://example.com/video.mp4');
    cache.put(request, responseToCache).catch(function(err) {
      console.log(err); //this is where the error is thrown
    });
  });
});

Я могу хранить несколько небольших файлов с общим размером >= 100 МБ.

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

Есть ли способ избежать этого ограничения?

Edit:

Максимальный размер видео, который я могу сохранить, составляет 64 МБ. Если размер больше этого, возникает ошибка.

Изменить 2:

Ошибка возникает только в Chrome. Firefox не имеет такого ограничения. Я пробовал видео с размером >= 350 МБ, и его ОК, в Firefox.

Ответ 1

Вы также несете ответственность за периодическую очистку записей кеша. каждый у браузера есть жесткий лимит на объем кеш-памяти, который данный изначальный можно использовать. Браузер делает все возможное, чтобы управлять дисковым пространством, но он может удалить хранилище кэша для источника. Браузер будет обычно удаляют все данные для источника или ни один из данных для происхождение. Убедитесь, что кеши версии по имени и только кешируют из версии script, над которой они могут безопасно работать.

Подробнее здесь

Поскольку эта спецификация технологии еще не стабилизировалась, я не рекомендую ее использовать в вашем приложении.

Ответ 2

"Максимальный размер" не является установленным номером, на котором он основан на вашем компьютере и объемом доступного дискового пространства, этот конкретный номер довольно сложно вычислить, и поэтому проще разместить chrome://net-internals/#httpCache в своем Google хром, нажмите "cache", затем найдите Max size: под statistics, если это число слишком мало, вы можете изменить max size.

Выполните следующие действия:

  • Щелкните правой кнопкой мыши ярлык Google Chrome в меню "Пуск" или на рабочем столе и выберите "Свойства"
  • Перейдите на вкладку "Ярлык" в верхней части "Google Chrome". Свойства ".
  • Нажмите поле "Цель" и нажмите клавишу "Конец", чтобы переместить курсор до конца текста.
  • Нажмите пробел один раз.
  • Введите "-disk-cache-size = 1073741824" (это равно 1 ГБ) в поле, изменив номер после "size =", чтобы он представлял пространство, которое вы хотели бы посвятите кеш-диск Google Chrome в байтах.
  • Нажмите "ОК". Закройте все запущенные экземпляры Google Chrome и повторно откройте браузер, чтобы начать использовать новый размер кеша.

Любые другие вопросы по этой теме, обратитесь к этой странице за отличный ответ https://superuser.com/info/769626/why-doesnt-chrome-respect-the-diskcachesize-policy