javascript - 如何检查资源是否被浏览器从 Javascript 缓存?

标签 javascript caching fetch abort

有没有办法在不下载资源的情况下检查资源是否被浏览器缓存?大多数问题和答案都是旧的,我相信现在情况已经发生了变化,并且有更好的方法。

最佳答案

您可以利用 fetch API 及其对应的 AbortController 来实现此功能,但有一定误差(预期漏报)。

它是这样的,获取需要的资源并附加一个信号。在少量时间内中止,例如。 4 毫秒。如果提取在短时间内返回,则绝对缓存。如果获取被中止,它可能没有被缓存。这是一些代码:

      async checkImageCached(url, waitTimeMs = 4) {
        const ac = new AbortController()
        const cachePromise = fetch(url, {signal: ac.signal})
          .then(() => true)
          .catch(() => false)
        setTimeout(() => ac.abort(), waitTimeMs)
        return cachePromise
      }

关于javascript - 如何检查资源是否被浏览器从 Javascript 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59787487/

相关文章:

javascript - 从具有特定条件的 div 中获取文本

javascript - 获取位于 jQuery 选择器项数组中的 <li> 内的图像 URL

php - 基于 DOM 的 XSS 攻击和 InnerHTML

c++ - 当元素是指针或引用时,连续内存 vector 没有优势吗?

caching - Redis缓存新闻文章

javascript - 如何通过angularjs $ index分配href或id

caching - 使用 Apollo 缓存具有多个 id 的 GraphQL 查询

php - 错误获取数组

php - mySQL 根据 PHP 中的另一列获取列

javascript - 覆盖 JS 中的获取方法并转发 Promises