“DOMException:没有找到入口”当对缓存存储做出大量响应时

问题描述:

我在Cache Storage中存储视频时遇到问题。它工作正常,如果视频具有体积小,但如果它的大小约为100MB,我得到这个错误:“DOMException:没有找到入口”当对缓存存储做出大量响应时

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 MB。

我想这是Chrome浏览器的限制,但我在Internet上找不到任何参考。

有什么办法可以避免这个限制吗?

编辑:

最大的视频大小我可以存储为64MB。如果大小超过该大小,则会发生错误。

编辑2:

在Chrome只发生的错误。 Firefox没有这样的限制。我在Firefox中尝试大小大于等于350MB的视频,以及它的OK。

+0

我忘了在那里,但我读的是Chrome的缓存API实现一个Windows的特定错误,他们愿意在下一个版本中修复它。 –

+0

您可以为1件物品存储的最大尺寸是多少? 5M? 20M? 99? – Rudie

+0

@Rudie最大容量为64MB。如果视频较大,发生错误 – Curious

You are also responsible for periodically purging cache entries. Each browser has a hard limit on the amount of cache storage that a given origin can use. The browser does its best to manage disk space, but it may delete the Cache storage for an origin. The browser will generally delete all of the data for an origin or none of the data for an origin. Make sure to version caches by name and use the caches only from the version of the script that they can safely operate on.

更多here

因为这项技术的规范还没有稳定下来,我不建议你使用它在你的应用程序。

+0

这很可能不是我的情况,因为正如文档中所说''浏览器通常会删除所有的数据来源或没有来源的数据''。在我的情况下,我无法保存某个视频,而其他视频仍在缓存中。 – Curious

“最大尺寸”不是基于您的计算机和可用磁盘空间量的设置数量,该特定数字有点棘手计算,因此只需将chrome://net-internals/#httpCache放置在您的谷歌浏览器中地址栏,点击“缓存”,然后在statistics下找到Max size:,如果这个数字太小,您可以更改max size

遵循以下步骤:

  1. 右键单击开始菜单或桌面 谷歌浏览器快捷方式,选择“属性”
  2. 单击“快捷方式”选项卡,在“谷歌Chrome浏览器的顶部 属性“窗口。
  3. 单击“目标”字段,然后按“结束”键将光标 移动到文本的末尾。
  4. 推动一次空格键。
  5. 在字段中输入“-disk-cache-size = 1073741824”(等于1GB),修改“size =”之后的数字 ,以表示您希望 专用于Google的空间Chrome磁盘缓存以字节为单位。
  6. 单击“确定”。关闭任何正在运行的谷歌浏览器实例,然后 重新打开浏览器以开始使用新的高速缓存大小。

对主题的其他问题,请参阅本页面为一个伟大的答案https://superuser.com/questions/769626/why-doesnt-chrome-respect-the-diskcachesize-policy

+0

嗯,它看起来像Service Worker缓存工作不同于常规缓存,并且不共享来自'chrome:// net-internals /#httpCache'的设置,因为我无法在后面的页面上找到我成功缓存的条目链接“探索缓存条目”。 – Curious

+0

因为您提供了最接近的解决方案,所以我授予了您的回答,谢谢)但是,这个问题仍然是开放的,因为我试图找到用户在使用html5缓存时绕过此限制的方式,或者,如果这铬错误,描述的链接 – Curious