问题标签 [cachestorage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
98 浏览

javascript - CacheStorage 制作的 JavaScript 浏览器缓存对象是线程安全的吗?

如果我在 UI 线程中使用与 Worker 线程中CacheStorage.open()相同Cache的内容,并开始从两侧读取/写入它,是否安全?或者可能有竞争条件?我希望 Cache API 是线程安全的(我会假设它是,就像 JS 中的所有其他内容一样)。

0 投票
0 回答
30 浏览

javascript - cache.match() 返回响应但没有标头

当我执行 a 时,cache.match(url)我成功地得到了响应。但是缓存给我的响应没有标题,我不明白为什么。

当我查看开发人员工具和缓存存储时,我可以看到与相应请求一起存储的标头。

有谁知道,为什么我不能得到标题?

0 投票
1 回答
266 浏览

javascript - 如果 Web 应用的 CacheStorage 缓存内容过多,应用会崩溃吗?

规范中的Caches没有太多可阅读的内容。

我想知道,如果我在缓存中存储大量数据,Web 应用程序会崩溃吗?还是应用程序的运行时内存限制与缓存存储分开?如果需要,缓存会卸载运行时内存并回退到文件系统吗?还是缓存会尝试将所有内容加载到内存中(从而崩溃)?它有什么作用?

我正在寻找有关缓存中是否有大量内容是否会导致我遇到的崩溃的洞察力。

编辑,在下面找到了答案。

0 投票
0 回答
952 浏览

javascript - 使用javascript从服务器下载后将视频文件保存在客户端浏览器缓存存储中?

从服务器下载后,我正在尝试将视频文件保存在客户端的浏览器缓存存储中。然后我只能通过浏览器内存在客户端使用该视频。

所以它可能以编程方式?

我搜索了很多文章,但没有找到好的解决方案。我知道本地存储和会话存储。那么我们可以将视频保存在这些存储中还是需要使用缓存存储?我有多个视频文件要下载,总大小为 60MB

0 投票
1 回答
1319 浏览

javascript - 在移动浏览器上使用 Cache API 的最大文件大小是多少

您可以在移动浏览器的 CacheStorage 中存储的内容主体的最大大小是多少?

具体来说,cache.add(...) 下面。

https://developer.mozilla.org/en-US/docs/Web/API/Cache

链接的其他答案都不是最近的,也不是指 CacheStorage 或 Cache API。问题不是重复的。

0 投票
1 回答
338 浏览

performance - 臃肿的 CacheStorage 会减慢 Service Worker 的响应速度吗?

我在 SW 中缓存不透明的响应,它以CacheStorage指数方式膨胀到 6 GB+ 的数量级。有时,我看到 SW 响应比浏览器缓存中的响应慢。
臃肿的 CacheStorage 在通过 SW 服务请求时会导致读取速度变慢并因此导致性能下降吗?这种性能在多大程度上是由机器装载的硬盘驱动器驱动的——SSD 还是 HDD?

PS:我知道理想的解决方法是修复不透明的响应或根本不缓存它们。

0 投票
0 回答
161 浏览

service-worker - 角度服务工作者数据组配置不考虑 Http 请求标头

我参考了此处记录的角度服务人员dataGroups配置:https ://angular.io/guide/service-worker-config#datagroups 。

我的配置dataGroups如下:

它现在缓存所有匹配该模式的 http 请求。

但是,我们还传递了一个自定义的 http 请求标头(即x-project-id: 8545dbf0-6e8b-47b0-b5ad-874415b20b63),http 响应将依赖该标头。

因此,对于两个不同x-project-id的值,响应的内容会有所不同。

让我们看一个例子:

第一个 GET 请求:

网址:/api/referential/xxx 标题:x-project-id: foo

第二个 GET 请求:

网址:/api/referential/xxx 标题:x-project-id: bar

不幸的是,使用我当前的配置,角度服务工作者将缓存第一个请求并返回第一个请求的响应内容,无论我的自定义标头是否已更改...

这是设计使然吗?

有没有办法确保角度服务人员考虑到自定义 http 标头,还是我必须project Id在 url 中传递?

0 投票
3 回答
771 浏览

google-chrome - Chrome - 几个小时后图像从缓存存储中消失

我有一个用作信息亭应用程序的网站。在线时,我从 wordpress API 预加载数据和图像,并将图像存储在缓存存储中。服务工作者拦截对这些图像的 http 获取并提供缓存数据。像这样,应用程序可以离线运行(包括 API 调用)。

但是在离线运行几个小时后(通常大约 6 小时),一些图像会从缓存存储中消失。而且总是一样的。

但不是所有的。知道我应该在哪里查看问题所在吗?

0 投票
0 回答
296 浏览

javascript - 使用响应类型“cors”在缓存中创建响应

我在更新缓存存储中的缓存以在应用程序离线时反映我们的更改时遇到问题,因为我无法创建具有“cors”类型的响应对象,该对象是应用程序在线时缓存的对象。

我需要用 a 更新以前的缓存响应,因为应用程序在离线Response-Type: cors时尝试再次获取请求时会查找具有相似属性的请求-响应对。GET

我尝试使用cache.put(req, res). 但是,我不能在程序上创建一个响应类型为“cors”的响应对象,因为它只创建“默认”,除非通过它似乎产生的实际网络调用。

Response-Type: cors有什么方法可以使用或更新现有的缓存主体来制作 Response 对象?

我尝试对extendsResponse 对象启用修改Response-Type

这是更新缓存的代码:

这将创建另一个缓存,除了Response-Type

0 投票
1 回答
188 浏览

javascript - Service Worker 可以访问浏览器缓存吗?

我还没有找到一个明确的答案,但从我的实验来看,以下似乎是正确的:

Service Worker 无法访问或控制传统的浏览器缓存。这是故意的吗?有没有我还没有发现的方法?

当我说“浏览器缓存”时,我并不是CacheStorage API。我知道服务人员可以完全访问 CacheStorage API。我的意思是当浏览器开发工具的网络选项卡中的请求说“来自内存缓存”而不是“来自服务工作者”或直接来自实际网络请求时使用的缓存。