分片缓存
客户端请求的range可能是碎片的,所以应该有一种机制可以把他们转换为对齐大小的分片,并把每个分片当做一个object来缓存。 那分片大小是怎么来的呢?
答:请求先经过slice进行对齐分片,cache_range_request.cc只是做回源与缓存key设置(这个逻辑在range_header_check函数中),slice做分片对齐逻辑,这个逻辑在request_block中。每个分片的大小是在remap.config中可以设置,默认设置的1M.一个典型的缓存key是http://xxxxx/0500094F756136BA7-00010.ts,,,-bytes=0-1048575.
所以在视频业务中经常可以看到ram的缓存命中率是30-40%,因为视频业务分片大小一般是512K,第一个分片请求磁盘命中,第二个分片请求就内存命中了。他们的url虽然不一样,但是到了ats中他们都会被转换成一样的缓存key。
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
· 如何通过向量化技术比较两段文本是否相似?
· 35+程序员的转型之路:经济寒冬中的希望与策略
· 推荐 5 款实用的 Docker 可视化管理工具,工作效率翻倍!
· 简单记录下最近2个月完成的线上系统迁移工作
· JavaScript面试题,为什么[] + 0 = '0', 而{} + 0 = 0?
· 瞧瞧别人家的接口重试,那叫一个优雅!
· 独立开发第二周:构建、执行、规划