大型电商缓存策略

何为静态化?

首先,要搞明白静态化,就需要注意“静态”两个字。之前好多同学都误解为前端html通过ajax调用后端接口这种也是所谓的静态化,只区分出了jsp或php这种有后端代码嵌入html页面的情况。这种理解为什么不对,因为这种渲染方式,html是要依赖于后端接口的,依赖于后端接口就会涉及到网络的开销。静态文件就只是纯html、js、css、image等等。

大型电商缓存策略

请求部分数据渲染:


1,首先请求打在nginx如果有对应的html直接渲染返回。
2,如果没有对应的html,那么请求到nginx本地缓存去构建html。
3,如果nginx本地缓存没有对应的数据,那么接着请求到redis集群上,如果redis集群中有数据则返回并存入nginx本地缓存。
4,如果redis集群没数据,那么请求到缓存数据生产application的local cache,如果application的local cache有数据则返回并存入redis集群中和nginx本地缓存。
5,如果application的local cache没有数据,则请求回源流量打在DB上面,其他流程同上。

html模板变化:


html模板发生变化,直接请求后端数据,重新渲染html,html请求流程与请求部分类似(略)

服务线数据变更数据渲染:


1,server端数据变更,向MQ集群send消息。
2,缓存生产服务监听MQ服务,消费数据进行数据缓存,先写到本地缓存,再写到redis集群中,最后再写一份去nginx的local cache。
3,html模板根据新数据重新渲染html。