从搜索这里可以看出,搜索列表展示的是固定30条数据,搜索的访问量已经很巨大了,那么详情页面的访问量是30倍的搜索量,如果放在整个百万级的用户量上来说,这个访问量是很巨大的,所以我们就不能每次访问详情页面的时候,都去服务端请求数据再展示
其次是这个详情页面来说,不会经常频繁的变动,所以每次去服务端取的数据基本都是一致的,所以我们就得想办法去解决如何快速的响应这么高的访问量
我们项目中服务端的请求和前端的请求,都是通过nginx做的反向代理,那么我们在项目中的方案是基于两个点去解决的,首先呢是结合模版引擎技术,用户在首次访问某个数据的详情页的时候,我们使用thymeleaf给生成静态页面,响应给用户,同时放到指定的nginx代理的目录下,那么用户在第二次访问这个数据详情页是,通过nginx中的配置,nginx首先会去该目录下查看是否有这个数据静态页面存在,如果存在的话,直接就访问静态html文件了,如果不存在,才会放行到我们微服务里去请求数据。
然后在线上的时候,会结合CDN技术,同时指向nginx代理的静态页面的路径,进一步提高用户的访问速度。
在生成静态页面的同时会造成一个问题,就是数据库的数据修改之后,需要同步到静态页面中去,这里我们采用的是rabbitmq做的异步处理,在数据库数据修改之后,通过mq发送消息,静态化的微服务收到消息之后,会重新生成一遍html页面,这样就会跟数据库的数据同步了。