Invidious 缓存调优:5 个配置让视频加载秒开

发布时间:2026/9/5 18:57:55
Invidious 缓存调优:5 个配置让视频加载秒开 Invidious 缓存调优5 个配置让视频加载秒开【免费下载链接】invidiousInvidious is an alternative front-end to YouTube项目地址: https://gitcode.com/GitHub_Trending/in/invidious凌晨一点进度条又开始转圈赶稿到深夜点开一个视频进度条卡了三次。切到 Invidious——这个 YouTube 的替代前端换个界面访问同一批视频同样的视频顺畅多了。差别就藏在它的缓存机制里把数据先存下来下次直接用。这篇文章写给第一次调 Invidious 实例配置的人带你弄懂它存了什么、存在哪、什么时候删。一张图看懂全局Invidious 的缓存分三层按数据的生命周期排请求来之前后台任务把订阅频道的数据提前搬进数据库请求处理时静态文件CSS、JS 这类驻留内存重复请求直接被拦截请求处理完过期的视频元数据标题、时长、观看数这些附加信息每小时从数据库清走。先看整体界面后文会用它对照每一层。三层缓存按数据的一生拆开请求进来之前定期任务负责预热这一层解决的是首次访问慢。后台有个 RefreshChannelsJob 任务每隔channel_refresh_interval默认 30 分钟把订阅列表里的频道重新爬一遍写进数据库。你打开订阅页时数据基本已经在库里了不用现场跑 YouTube。feed 刷新任务也在持续更新订阅流。关键配置就一个channel_refresh_interval在 config/config.example.yml 里改。请求正在处理时内存层拦截重复请求这一层解决重复读盘。静态资源第一次被读进内存上限 5MB。内存缓存上限在哪改它不在配置文件里是源码里的CACHE_LIMIT常量见 src/invidious/http_server/static_assets_handler.cr编译进二进制。之后所有请求直接从内存返回如果浏览器说文件没变直接回一个 304Not Modified即内容没变、不用重传。既省磁盘 IO也绕开了系统文件句柄数的限制。请求处理完之后数据库层的过期与清理这一层解决旧数据赖着不走。视频元数据带 6 小时有效期ClearExpiredItemsJob 任务每小时扫一次把到期的记录删掉逻辑在 src/invidious/jobs/clear_expired_items_job.cr。缓存过期时间怎么调这个 6 小时是内置在 src/invidious/database/videos.cr 的不是 yml 参数日常调优不用碰它。另一个相关开关是注释缓存cache_annotations打开后视频注释也存进数据库下次不用重新解析。踩坑地图四个最常见的性能陷阱1. 订阅页数据总慢半拍症状频道更新一周订阅页还没刷新。原因channel_refresh_interval默认 30 分钟且channel_threads只有 1。解法在 config/config.example.yml 调短channel_refresh_interval、调大channel_threads。2. 注释每次都要重新拉取症状视频页注释区总是转圈。原因注释缓存默认关闭。解法注释缓存如何开启在 config/config.example.yml 设cache_annotations: true。注意空注释不会缓存。3. 全量刷新把带宽吃满症状实例流量暴涨对 YouTube 的请求密集。原因full_refresh打开后会爬频道的全部历史。解法在 config/config.example.yml 保持full_refresh: false除非确需历史数据。4. 数据库越存越大症状videos 表行数持续增长。原因clear_expired_items定时任务被禁用。解法在 config/config.example.yml 的 jobs 段确认它处于启用状态它会每小时清掉到期数据。调优实操清单 ⚙️改的是你自己实例的 config.yml从 config/config.example.yml 复制而来改完重启生效改哪个参数建议值适合什么场景cache_annotationstrue注释请求频繁想少回源 YouTubechannel_refresh_interval15m希望订阅页更新更快channel_threads2 以上订阅多单线程刷新跟不上full_refreshfalse省带宽不爬频道全部历史default_user_preferences.preloadtrue播放器提前缓冲默认已开确认没被改视频元数据 6 小时的有效期是内置的不在 yml 里所以清单里没有它。典型改动长这样cache_annotations: true如何确认优化生效 看任务日志日志里定期出现jobs: ClearExpiredItems done.和RefreshChannelsJob: Done说明清理与预热都在跑。把 log_level 调高可看更细的信息。浏览器开发者工具Network 面板刷新两次页面第二次请求 assets 目录下的静态文件时返回 304或直接从内存秒回响应头里带Cache-Control: max-age2629800。同一视频看两遍第一遍稍慢第二遍明显变快说明数据库层缓存生效了。接下来会更好缓存的本质是让每次访问都为下次铺路。下一步值得期待的方向是更聪明的预测式预热。【免费下载链接】invidiousInvidious is an alternative front-end to YouTube项目地址: https://gitcode.com/GitHub_Trending/in/invidious创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考