☎️ ☎️ ☎️ 已开源基于SpringBoot+Mybatisplus+Layui+SnakerFlow前后端分离轻量级工作流引擎的脚手架项目 easy-admin
前言
背景
在我的开源项目EasyAdmin中,服务器是2C2G1M带宽的低配入门机器,然后还部署了大大小小十几个服务,所以感觉比较卡。升级配置?对于我这个穷屌丝来说,那是没戏了,只能通过优化系统来提高性能了。
分析
可以先看下面的图
这里为了方便排查,我已经按照Time
排序了,可以看到最耗时的是log?page
这个接口,内部逻辑是查询数据库并返回json
,图中是我已经优化过的,没优化的时候比这个慢很多,size
是6KB
左右而不是现在的1.3KB
。
1M带宽实际上是128KB
,有人测试过了,阿里云是不限制上传带宽,限制的是下载带宽,也就是这里下载速度最大是128KB/S
.
所以就会想到利用GZIP去压缩下返回体大小。
作为文本数据,JSON 数据压缩得很好。它可以自动应用于发送和接收 JSON 的通用协议 HTTP。
配置
yaml配置如下:
server:
compression:
enabled: true
mime-types: application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css
min-response-size: 1KB
min-response-siz
:设置为 1,024 字节。这是因为如果我们压缩少量数据,我们可能会产生比原始数据更大的数据。
不要想着在这里压缩图片和视频,这个只针对文本型,图片视频压缩可能比原文件还大
补充
除了使用服务器端压缩,还可以把图片、视频、JS、CSS等静态资源,利用CDN、OSS进行加速哦。
相当于把流量分到了CDN和OSS上,用以减轻我们1M带宽小水枪的压力哦
- OSS
- 图片
- 视频
- 音频等
- CDN
- layui
- jquery
- css等