V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tcper
V2EX  ›  前端开发

发布了一个利用 IndexedDB 缓存图片的包

  •  
  •   tcper · 148 天前 · 1501 次点击
    这是一个创建于 148 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一般都利用浏览器自己的机制缓存图片

    不过有时候也有一些手动缓存图片的需求,比如经过长时间下载的图片

    还有一些经过计算生成的图片,没必要每次重新计算,也希望手动缓存起来。

    正好 IndexedDB 本身是可以存储 blob 数据,于是开发了一个利用 IndexedDB 缓存图片的库

    已经发布,大家可以试试

    https://github.com/tcper/indexeddb-image-cache

    9 条回复    2024-07-31 08:48:45 +08:00
    vsitebon
        1
    vsitebon  
       148 天前
    最近写小工具正好用得上,我的使用场景是需要用 indexdb 持久化资源;不清楚这个是不是能拓展到缓存所有文件资源?
    kkocdko
        2
    kkocdko  
       148 天前 via Android
    好,又多了一批滥用 indexeddb 的家伙。这就是我对陌生网页默认禁用 js 的原因。

    b 站网页端也这么干。

    请遵守规范,请将缓存存入 cache storage 。将垃圾塞进 indexeddb ,说明开发者也是垃圾。
    tcper
        3
    tcper  
    OP
       148 天前
    @vsitebon 你的文件只要能转为 blob 对象都可以存


    @kkocdko 滥用浏览器 API 的网站多了去了,还有这个 https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system ,可以写入用户不可见的文件系统。我这个包目标很简单,就是缓存一些图片用的,例如 canvas 生成的一些图片,不希望每次都重绘制。
    kkocdko
        4
    kkocdko  
       148 天前 via Android   ❤️ 9
    等有空了一定写一篇文章,好好梳理一下当代的低水平前端开发滥用和误用 web api 的案例

    “滥用浏览器 API 的网站多了去了”,我觉得你的逻辑恐怕有点问题,这个世界上杀人的多了去了,这就是杀人的理由?
    lemon6
        5
    lemon6  
       148 天前
    @kkocdko #2 你说的规范出处能贴一个吗?
    lxxfljy
        6
    lxxfljy  
       148 天前 via iPhone
    网络资源的话,管理缓存应该用 service worker 配合 cache storage api 使用,不应该鼓励在主线程 js 处理,不过但是假如是纯本地的数据缓存是可以用 indexeddb 存的,没必要封装成 request 存进 cache
    DOLLOR
        7
    DOLLOR  
       147 天前
    @kkocdko
    最毒瘤的是 youtube 、推特(X)、gmail ,打开网站存储空间,这三家总是名列前茅,动不动就上百 MB 的数据
    apades
        9
    apades  
       145 天前 via Android
    这个 db 默认占 chrome 安装位置的系统盘挺难绷的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3113 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:21 · PVG 21:21 · LAX 05:21 · JFK 08:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.