谁会想到呢?
著名的Basecamp产品将内存缓存改成使用DB作为缓存媒介后,缓存的读取速度慢了约40%。比如从Redis读取缓存内容时,只需要 1 ms,改成从DB读取后,读取速度变成1.4 ms。
谁会想到,这让缓存的成本降低了80%,并且缓存使用的空间还是原来的6倍的情况下。
为什么呢?
Basecamp严重依赖 fragment caching 技术,即将HTML片段直接存储在缓存中。这意味着他们需要的缓存空间非常大。
诚然,内存访问速度的确几倍快于磁盘访问速度,但是,速度本身除了包括内存操作时间,还包括网络传输时间、序列化时间、压缩时间。而且DB本身内建有内存缓存。
个人猜测是因为Basecamp缓存的内容的体积较大,内存缓存的优势被降低了,所以,使用DB缓存也就理所当然了。
但是是有前提的
Basecamp这样做能做到降本是有其前提的,我们不能盲目模仿。但是值得去学习其中的经验。
降低速度所带节约下来的成本,从业务上是否是值得的?你总不能因为降低速度节约100万的成本,却因为速度导致失去用户而损失200万。这个问题的本质是用户对于那零点几毫秒的速度是否在意。
另一个角度,Basecamp缓存的是fragment,缓存单元大小和规模是否要达到一定程度,才能把DB缓存的成本优势发挥出来。
总之,如果要模仿,需要谨慎评估与操作。
为什么Basecamp能想到这种方法降本?
软件行业里流行着一个说法:当加载时间从a秒增加到b秒时,跳出(访问者立即离开)的概率将增加x%。
这个说法深入软件行业从业者的心。从各大厂的面试题就可以体会出来,从来都是考核如何更快。
所以,我才觉得这是降本增效奇技,因为思维惯性,很难想到:接受速度降低,以实现降低成本。
为什么Basecamp公司能想到这个方法?这是我非常感兴趣的问题。
有以下几种可能:
• 是DHH(Basecamp老板)主动想到的?
• 是员工想的?员工为什么能想到?
关于Solid Cache的原文:https://dev.37signals.com/solid-cache/
关注我,还有更多降本增效文章等着你哦。
往期好文推荐: