作者回复: 举个栗子,假如三次访问同一个商品,cache分别有3组,那么如果这3次访问都分别访问不同的3组cache那么是不是3次都没命中。如果只是一组cache的话,那么除了第一次没有命中外,后面两次就命中了。所以cache分组对命中率是不是有影响了。
作者回复: 因为时间要以服务端为准,客户端的时间用户可以自己修改
作者回复: Viso就行啊
作者回复: 只要你想学一定能找到机会,至于如何向别人学习,最简单的一个办法,多和那个同学吃吃饭,一回生二回熟😊
作者回复: 二级cache是指cdn设置了多级回源机制,就是如果缓存没有命中再到二级缓存中去取,而不是直接回服务端来请求
本质是减少回原的请求量
作者回复: 抽象总结能力很强😉
作者回复: 理论上都可以,各有优缺点,秒杀推荐在客户端做,普通的商品推荐在服务端做
作者回复: 动态数据在服务端合成是通过一种叫ESI的技术实现的,例如<esi:src="xx.htm"/>在静态页面中包含这种标签,然后由varnish等软件来解析这种标签,再发起动态请求,把动态请求的结果合成到静态页面中,最终形成一个完整的页面
服务端生成json格式的目的本身是方便让前端页面渲染时容易使用这些数据。可以把这些json数据在服务端合成一起输出,也可以在浏览器里单独发一个ajax请求再异步获取都可以
作者回复: 😉,在单独的qa文章中有介绍
作者回复: 你可以了解一下varnish的原理
作者回复: 失效需要一个失效系统来实现,一般有主动失效和被动失效
主动失效需要监控数据库数据的变化然后转成消息来发送失效消息,这个实现比较复杂,阿里有个系统叫metaq,大家可以去网上查查
被动失效就是只缓存固定时间,然后到期后自动失效
作者回复: Cache层是web缓存可以直接缓存http请求,例如varnish
另外一个缓存就是redis这种
作者回复: 就是一个大的cache,存放了不同的内容,可以调整存的比例
作者回复: 🙂
作者回复: 多个虚拟机实际上就是共用一个实体机,所以每个虚拟机能用的资源就是少一些,因为每个虚拟机会竞争整个实体机的资源,例如网络和内存。所以单个实例来讲虚拟机和实体机能用的资源还是有很大差异的
作者回复: 一致性hash可以让相同的请求落在同一台机器上,这样就可以提升cache的命中率了,也可以看看第8节我专门解释了这个问题
作者回复: 一般情况下,有多级缓存的话,都是二级缓存的节点数少一点,这样能提升二级缓存的命中率。
选一级缓存也是为了提升命中率