为什么要做页面静态化?
提高页面的响应速度。
可以做页面静态化的情况:
1、页面并发高
2、页面数据不会频繁改变
页面静态化相关数据库设计
1、Nginx站点表
2、页面模板信息表
3、页面静态化日志表(每生成一次都要记录)
业务流程:
页面静态化微服务:1、模板的CRUD。2、页面静态化
1、添加模板:向Fastdfs上传模板,同时添加页面到数据库。
2、微服务:页面数据发生改变触发页面静态化,查询数据,存储到Redis,
把Redis的key和t_pager作为参数,调用页面静态化微服务。
3、页面静态化微服务:获取到t_pager的name找到t_pager对象,找到模板路径下载模板。
根据Redis数据的key获取数据。
4、模板和数据都拿到,使用模板引擎合并模板,输出html,将html上传到Fastdfs。
5、html需要自动输出到Nginx。页面数据需要关联(Nginx)站点域名和站点的物理路径。
将html输出到Nginx流程:在Nginx端写一个代理微服务,页面静态化微服务MQ(routingkey为站点名)发消息给Nginx代理微服务,消息包含站点物理路径以及html在Fastdfs下载路径
6、Nginx代理微服务监听MQ,拿到消息从Fastdfs下载html,把html拷贝到Nginx对应的物理路径。
使用RabbitMQ的原因:
1、页面静态化微服务和Nginx部署在不同的地方,Java代码无法直接将文件写过去,所以需要使用中间服务器。
2、前台站点不止一个,也就是Nginx不止一个,RabbitMq可以让消息发送到指定的Nginx代理微服务。