前言

最近发现我部署在群晖NAS上的兰空图床程序在高并发的情况下会导致图片加载缓慢或出现图片加载失败的情况,于是我查阅了官方文档资料并进行了一系列的测试,发现兰空图床如果开启了原图保护功能,会非常的吃CPU的性能,尤其是在同时加载多张开启了原图保护的图片时,会让CPU直接满载。

兰空图床支持 Redis Memcached 作为缓存驱动,通常情况下默认的文件储存已经足够用,但是如果你的图床开启了原图保护功能,强烈建议更换为Redis 或 Memcached 缓存驱动。

在此以Redis缓存策略进行演示,需提前安装好Redis

教程

  1. 安装Redis,可参考【Docker】搭建一个开源的内存中数据结构存储系统 - Redis

  2. 在docker映射路径中找到兰空图床数据映射文件夹中的.env​文件。

  3. .env​配置文件进行编辑,如果无法在线编辑,可以先下载到本机,然后编辑完再上传到群晖NAS中覆盖原配置文件。

    配置说明

    • CACHE_DRIVER​:缓存驱动名称

    • REDIS_HOST​:redis 连接地址

    • ​REDIS_PASSWORD​:redis 连接密码

    • ​REDIS_PORT​:redis 连接端口

  4. 在兰空图床管理后台中,把开启原图保护的角色组,设置“图片缓存时间(秒)”,然后点击保存即可。

    具体缓存时间可以根据自己的内存和图片的访问频率来决定。

  5. 使用Redis客户端链接到数据库查看数据,我这里使用的是Tiny RDM(https://redis.tinycraft.cc/zh/),你可以根据自己的使用习惯选择其他的Redis客户端。

  6. 一般情况下,只需要填写“常规配置”即可。“连接名”可根据自己喜好填写;“连接地址”根据你的Redis数据库搭建地址填写,Redis默认端口是6379​;“密码”填写Redis的登录密码;“用户名”根据情况填写,为可选。配置好后点击“测试连接”,提示“成功连接到Redis服务器”则可以点击“确定”。

  7. 双击服务器名称即可建立连接。

  8. Redis默认情况下只有16个数据存储库,在左小角找到兰空图床的数据存储库并选中即可查看其状态。

    兰空图床的图片只有在首次访问的时候,才会加入Redis缓存,直到缓存时间过期才会释放。释放后需要再次访问一次,才会重新加入Redis缓存中。