目录
一、动静分离
1.1 架构三大分离设计
- 读写分离
- 动静分离
- 前后台分离
1.2 动静分离
- 静态数据是”无个性化”数据
- 静态文件: HTML/CSS/JS/图片
- 低频变动数据: 字典数据 / 地区数据 / 组织架构 / 历史数据
- 动态数据就是个性化/高频写数据
- 个性化推荐
- 高频写: 股市行情 / 5G信号数据 / 天气变化
1.3 有效区分页面中的动静数据是优化的关键前提
二、动静分离案例
2.1 缓存架构
2.2 动静分离流程图
- 静态页面处理需要几毫秒
- 动态页面生成需要几百毫秒
- 如何将动态页面生成到静态页?
2.3 页面静态化与伪静态化技术
- 页面静态化技术
- 将动态页面”另存为”静态页面保存到本地磁盘
- 利用Nginx直接路由到磁盘文件,不再进入后端
- 文件碎片化严重,文件同步管理麻烦
- 页面伪静态化技术(推荐)
- 利用Redis缓存,缓存生成的页面
- 没有碎片化问题,可自动过期,数据管理轻松
- 需要大量内存存储信息
2.4 伪静态化
2.5 静态化的问题
- 静态化只适合数据集有限(百万量级)的场景
- 热点商品SKU
- 页面集过大不适合静态化
- 商品全量SKU,文件碎片太多
- 批量同步磁盘IO瓶颈
- 伪静态化内存开销太大
- 动态内容是静态化遇到的新挑战
三、动静整合方案
- 服务端SSI法
- 利用Nginx SSI特性实现服务端动静整合
- Ajax异步调用法
- 生成静态页面,动态数据部分发起Ajax异步查询
3.1 利用SSI实现动静分离
SSI是Server Side Inclde的缩写,是一种 基于服务端的网页制作技术 ,就是服务端包含的意思,该项目中用到了nginx中SSI模块的include命令, 这个命令会包含一个页面 ,然后在nginx服务器中展开。