整页缓存
关于缓存
1.fecify系统的缓存是多方面的,有很多的数据区块的缓存,然后进行组装成json数据,在vue模版里面,vue进行js渲染,然后展示页面内容
2.在新架构模版,UI渲染是在服务器进行渲染出来最终的html内容,因此页面的内容分为2个部分:数据计算,页面渲染
- 因此,对于liquid模版,可以对这个页面最终渲染出来的html源代码,进行缓存,也就是整页缓存
- 譬如:首页,将首页的html进行整页缓存
3.对于前台商城的页面,存在一些动态数据,
- 譬如:首页,右上角的购物车商品个数,账号登录信息
- 这些动态数据,通过api进行获取
缓存提速-QA
1.怎么理解缓存?
答:缓存可以理解成做数学题,直接记录了答案。举例子:我们平时练习做了一道数学题,耗费了10分钟时间,如果期末考试试卷上面有一道完全一样的题目,那么我们可以不去计算,直接填写答案
当用户访问首页,如果某个部分的内容,任何人访问都是相同的,那么这个部分就可以缓存起来,通过一个唯一缓存key做标识
- 缓存key:对页面内容输出有影响的变量,譬如:页面类型,语言,货币,参数等等,通过这些生成一个缓存key唯一值
对于首页的内容部分,商品详情页的内容部分,任何人访问,返回的页面内容都是相同的,因此就可以做成缓存。
2.缓存怎么做提速?
答:系统刷新缓存后,第一次访问网站首页,由于没有缓存,是没有速度提升的。当第二个用户访问网站首页,由于存在缓存,那么速度将大大提升,毫秒识别相应
3.缓存对服务器要求
答:缓存都是放到redis里面,redis是内存型数据库,需要服务器有更高的内存(不是磁盘,是内存)。
4.liquid新架构模版,缓存有哪些?
答:区块缓存和整页缓存。
- 区块缓存:对于商品详情页,每个商品的头部和尾部都是一样的,因此可以做成区块缓存,存在缓存后,商品页面渲染(譬如:1000个商品),头部和尾部都节省开销
- 整页缓存:对于首页,每个商品的详情页,对其进行缓存。当第二次访问,速度将非常快,节省服务器开销
5.动态数据怎么处理?
答:动态数据,通过异步加载来实现的,也就是通过api,进行单独加载内容,然后js渲染
1.对于页面顶部的动态数据:购物车个数,账号登录状态。
- 第一次访问页面,这些数据没有初始化,那么将通过js进行api异步加载,进行浏览器本地数据初始化。
- 浏览器本地数据初始化后,用户访问第2个页面,将不需要进行api异步加载这些数据(因为本地有了这些数据了)
- 当进行商品加入购物车操作,进行本地数据的更新就可以了
- 通过这个逻辑,解决了动态数据的显示,又减少了api的频繁请求(如果每个页面都请求购物车商品个数,那么将是很大的开销)
2.页面内容数据
- 对于购物车页面,订单结账页面,账户中心页面,这些页面的内容部分,每个人都是不一样的
- 这些数据将通过api请求,进行异步渲染
- 加载,api请求过程中,都会显示骨架屏,让整个过程更加流畅
3.内容交互部分
- 内容交互,指的是用户进行了点击等事件操作后的交互,譬如:商品加入购物车,右侧抽屉弹出购物车信息
- 这些动态数据的显示,都是api请求,进行异步渲染出来的
- api请求过程中,都会显示骨架屏,让整个过程更加流畅
6.整页缓存,深入理解?
答:整页缓存开启,针对的全局页面。
- 常规页面:首页,商品详情页,商品专辑页等
- 操作页面:购物车,订单结账页面
- 账户中心:账户登录,注册,账户中心订单列表等
缓存针对的是全局页面,而不是某几个页面,是从架构层面,做全局整体的页面缓存, 对于动态数据,全部通过js api请求加载。
- 譬如:订单结账页面,通过整页缓存,可以快速的加载整体框架内容,对于订单收货地址,货运方式,支付方式列表等,先显示骨架屏,通过api异步加载,api返回后,骨架屏消失,显示页面内容
- 譬如:账户中心订单列表页面,用户的订单列表数据,先显示骨架屏,通过api加载后,骨架屏消失,显示订单列表数据
使用缓存
1.整页缓存开启

2.缓存刷新

开启缓存后,可以极大提升网站的访问速度,达到毫秒级别的响应,
- 如果您的服务器缓存充足,可以提高缓存的时间
- 当coudflare缓存过期后,将访问服务器获取数据,如果存在整页缓存,则直接返回,节省开销
- 现在的很多爬虫,爬网站内容,开启整页缓存后,可以节省很多的服务器开销
- 开启整页缓存后,网站稳定后(一般不编辑数据,那么就不需要刷新缓存),这种情况下可以加大缓存的时间。