SDWeb(图片缓存架构设计)

在这里插入图片描述

SDWeb(图片缓存架构设计)

优化

减少任务量

  • 缓存后则无需

转移任务量

  • 更多的去子线程操作
  • 自己的任务做了什么
  • 底层的系统做了什么

怎么取消一个未加载完成的图片

同时加载一个图片的时候,怎么去重

加载流程

第一次加载

  • 网络操作(下载)

    • 保存本地

      • 加载图片

第二次加载

  • 取本地

bitmap

  • 一种位图的格式,线程里边进行操作

类构成

Manager(管理者)

  • 多级缓存策略

    • 内存

    • 磁盘

    • 网络下载

      • 耗时
      • 流量损耗

查找流程

  • 查找开始

    • 内存是否命中

      • YES

      • NO

        • 磁盘是否命中

          • YES

          • NO

            • 网络下载

              • 结束

注意点

图片通过什么方式进行读写?

  • 以图片的URL作为Key
  • 把图片的URL进行MD5后加密(安全)
  • 把图片URL单向HASH值作为KEY(类似2)

计算机组成原理组成部分借鉴

  • 多级缓存(提高查找效率)
  • 淘汰算法(合理管理空间)

架构设计

内存设计

  • 存储Size

    • 小图N张
    • 中图N张
    • 大图N张
  • 淘汰策略

    • 队列形式

    • LRU

      • 方式

        • 检查触发时机/频率

          • 每次读写时候
          • 前后台切换时候
        • 定时检查

      • 缺点

        • 空间
        • 时间

磁盘设计

  • 特性

    • 空间大
    • 读取效率低
  • 设计

    • 存储方式
    • 大小限制
    • 淘汰策略

网络设计

  • 图片请求最大并发量
  • 请求超时策略(重试一次)
  • 请求优先级(任务)

图片解码

  • 磁盘读取后
  • 网络请求返回后
  • 解码的时机(要显示为前提)
  • 不同格式的图片采用策略模式,提高框架的稳定性

XMind - Trial Version

猜你喜欢

转载自blog.csdn.net/u010436133/article/details/108985191