广场页

页面和模板(后端渲染 缓存)

回顾模板技术方案

  • 广场页是每个人都能进行访问的,而且访问到的内容都一样,所以可以通过redis缓存微博列表数据来减少请求,优化代码,路由不再通过controller层去找service层获取数据库数据,而是通过cache层去看缓存中有无数据,没有再去找service层获取数据库数据
  • 广场页的前端和个人主页的前端区别在于广场页没有右侧,且广场页加载更多的路由是api/square下的
  • 回顾模板方案
  • 回顾技术方案

查看模板代码

  1. views下新建square.ejs

开发路由&渲染数据

页面路由

  1. 【路由层】创建页面路由,调用controller层getSquareBlogList函数: src-routes-view-blog.js:创建页面路由
  2. 【controller层】创建getSquareBlogList函数,调用cache层getSquareCacheList函数读取微博列表数据: controller下新建blog-square.js,这里和个人主页不同时因为controller层会访问cache层(redis)将缓存拿到并返回
  3. 【cache层】使用redis的get读取数据,有则返回,无(即数据过期)则到service层getBlogListByUser函数去读取数据库数据,并使用set缓存到redis中: cache下新建blog.jscache层
  4. 【service层】getBlogListByUser函数中做了兼容,可以不传userName来查询数据库:service-blog.js:service-blog.js
  5. 测试:redis是每一页都缓存在了相应的key值中(key的命名是:前缀【weibo:square:】+当前页码+一页最多的条数):进入广场页,点击“加载更多”加载第二页,查看redis缓存的所有键名:redis

接口路由(加载更多)

  1. 【路由层】创建 加载更多路由,和个人主页的加载更多逻辑基本一致:src-routes-api下新建blog-square.jssrc-routes-api-blog-square.js
  2. 【app.js注册路由】:app.js注册路由
  3. 【controller层】还是和页面路由一样的getSquareBlogList函数
,