页面和模板(后端渲染 缓存)
回顾模板技术方案
- 广场页是每个人都能进行访问的,而且访问到的内容都一样,所以可以通过redis缓存微博列表数据来减少请求,优化代码,路由不再通过controller层去找service层获取数据库数据,而是通过cache层去看缓存中有无数据,没有再去找service层获取数据库数据
- 广场页的前端和个人主页的前端区别在于广场页没有右侧,且广场页加载更多的路由是api/square下的
查看模板代码
- views下新建square.ejs
开发路由&渲染数据
页面路由
- 【路由层】创建页面路由,调用controller层getSquareBlogList函数: src-routes-view-blog.js:
- 【controller层】创建getSquareBlogList函数,调用cache层getSquareCacheList函数读取微博列表数据: controller下新建blog-square.js,这里和个人主页不同时因为controller层会访问cache层(redis)将缓存拿到并返回:
- 【cache层】使用redis的get读取数据,有则返回,无(即数据过期)则到service层getBlogListByUser函数去读取数据库数据,并使用set缓存到redis中: cache下新建blog.js:
- 【service层】getBlogListByUser函数中做了兼容,可以不传userName来查询数据库:service-blog.js:
- 测试:redis是每一页都缓存在了相应的key值中(key的命名是:前缀【weibo:square:】+当前页码+一页最多的条数):进入广场页,点击“加载更多”加载第二页,查看redis缓存的所有键名:
接口路由(加载更多)
- 【路由层】创建 加载更多路由,和个人主页的加载更多逻辑基本一致:src-routes-api下新建blog-square.js:
- 【app.js注册路由】:
- 【controller层】还是和页面路由一样的getSquareBlogList函数