node+redis搭建静态化服务

529 阅读3分钟
背景:为什么要做静态化?
在了解静态化之前,我们需要先了解什么叫静态网页,静态网页是服务器上面真实存在的页面,它不需要编译,用户就可以直接访问这样的网页,后缀一般为.html。如果我们把这个网页上传到我们的服务器或者是空间,那么它就可以通过直接访问我们的域名去打开这个网页。
静态化页面的好处:
1.打开页面速度提升;
2.有利于搜索引擎的抓取收录;
3.静态网页相对比较稳定;

场景:用静态化去解决什么问题?
那么做静态化做什么用呢?假设我们现在做一个项目需要给到每一个用户自己一个定制化的页面,并且每一个用户的页面都有自己的风格特色。那么这个时候我们想到给用户做一个编辑后台让他们自己去产出自己想要的页面。我们用一套模板引擎的代码是可以完成用户的需求。根据用户配置的不同参数去生成不同的页面,用服务端渲染也可以做到。这时问题来了,如果产品迭代升级有些功能需要废弃但是要保证用户编辑的老页面也可以使用。这个时候服务端渲染就做不到了,这个时候就要去使用页面静态化去做,静态化页面不仅可以保证过往页面可以使用,并且还可以保证页面的稳定性,这种针对增量去实现的方法的风险要小于服务端渲染的。

项目:
技术栈简介:
node:使用的koa框架
Koa 是现在最流行的基于Node.js平台的web开发框架,由 Express 原班人马打造,利用 async 函数,Koa丢弃了回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件,给人一种干净利落的感觉,体积小、编程方式干净。

art:
art-template 是一个简约、超快的模板引擎。
它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器

redis:
Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
redis 支持 key-value 类型的数据,便于使用
高性能 : Redis 能读的速度是 110000次/s ,写的速度是 81000次/s
丰富的数据类型 : Redis 支持 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
原子型操作 : Redis的所有操作都是原子性的,还支持对几个操作全并后的原子性执行

Vue:
前端主流框架,简单易上手;这边主要是用来搭建前端页面


目录结构:


分为前端客户端生成,和后端页面生成服务




项目流程:






客户端地址:http://localhost:8080/ 数据填写



开启redis服务 并且如果redis队列中有数据开启生成服务

请求page接口:

将数据存储到redis


数据进来后存入redis队列;并且发布

发布后redis服务收到请求 调用生成服务(node事件机制)并且取消订阅
生成服务


生成服务从redis中 取出最后一项(先入先出)


如果取出数据那么走生成服务 并且递归当前的生成服务; 如果redis中没有数据了 那么就去订阅;

生成文件方法
生成的文件储存在本地,上传OSS


以上就是静态化页面的大致流程,使用redis是为了项目的健壮;更好的生成稳定服务;