分片缓存

客户端请求的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。

 

posted @ 2025-01-21 10:46  你的KPI完成了吗  阅读(8)  评论(0)    收藏  举报
编辑推荐:
· 如何正确实现一个 BackgroundService
· 抽象与性能:从 LINQ 看现代 .NET 的优化之道
· AI 时代,为什么我们还有必要写博客?
· 行业思考:不是前端不行,是只会前端不行
· C#高级GDI+实战:从零开发一个流程图
阅读排行:
· 被 DDoS 攻击的一夜
· 记一次酣畅淋漓的js逆向
· 一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
· 如何正确实现一个 BackgroundService
· 上周热点回顾(7.28-8.3)
点击右上角即可分享
微信分享提示