legend3---28、缓存优化的几种策略
一、总结
一句话总结:
1、数据库和缓存同时更新,用更新好的数据库来更新缓存,这种数据最准确:比如评论数量,比如用户点赞、收藏
2、数据库和缓存同时更新,是同时更新数据库和更新缓存,不是用数据库来更新缓存(相比于上一种,少了一次查数据库的操作):
3、只更新数据库不更新缓存,这种的话缓存存个一两分钟,一两分钟之后数据更新:比如首页,比如课程数据,比如视频数据
1、要是可以定时刷新缓存中的内容到数据库就好了?
那样我们只用修改缓存,缓存快失效的时候,用缓存中的数据去刷新数据库的数据就好
2、代码写完之后一定要检测,要整理,也就是code review?
一方面可以检查错误,另外一方面可以优化代码,整理代码
3、首页并不适合那种修改了就做更新的缓存?
首页适合过多少1分钟自动更新的缓存
4、通过缓存,可以把数量转化为时间量?
比如三十秒1000次访问,如果设置缓存,设置为三十秒,则就是把这1000次访问对应成了一次,而三十秒影响不到用户的操作和数据显示
5、laravel在模型中查看请求的参数(比如缓存分页数据)?
a、获取请求对象:$request = request();
b、获取请求参数的数组(比如分页):$request = request()->toArray();
6、缓存数字时候的判断不能是if($lesson_comment_num)?
因为数字有可能是0,不为null可以这样判断
7、缓存的时候,可以把公共的数据保存,差异化的数据直接从数据库中取就好了?
比如视频页的视频数据,视频和章节的基本数据可以存缓存,但是每个人视频的观看记录可以直接从数据库中查
8、缓存数据库数据到缓存的时候,要存数组,不要存数据库对象?
比如缓存课程对应的博客,如果缓存数据库数据对象为27K,缓存数组只有11K,也要把一些不要用到的字段排除掉,比如blog的summary
9、缓存数据的时候,缓存的数据的结果不要是null?
因为我们判断缓存是否存在的时候判断的是这个缓存的结果是不是null,推荐缓存数组:if($lesson_chapters!==null)
10、每一个ajax请求之前,都要进行用户session是否存在判断,因为用户很有可能是打开的页面之后过一会儿再进行的操作,比如吃饭,比如浏览器重新加载页面?
因为这样可以避免用户登录这个页面很久之后,session失效,而报的错误
二、内容在总结中
博客对应课程的视频位置: