zrlog 3.0 发布,全新技术架构,2024 年,一个仅使用 64m 内存就可以正常运行的博客系统
ZrLog是使用 Java 开发的博客/CMS程序,具有简约,易用,组件化,内存占用低等特点。自带 Markdown 编辑器,让更多的精力放在写作上,而不是花费大量时间在学习程序的使用上。
ZrLog 3.0 版本起因
ZrLog 从14年开始使用 JFinal 作为默认的 web 框架,很多特点都方便和实用,加上 JFinal 本身框架并不复杂,很适合中小企业使用,最近有网友反映 ZrLog 在较新的 Java 容器里面无法正常使用,才发现原来 java ee 迁移到 jakarta ee,已经是三年多前的事情,Spring Boot 在 3.x 版本也完成了这个迁移,在 tomcat10 发布时就尝试自己将 JFinal 的相关引用库进行升级,考虑到包管理,所以并没有完成迁移
为什么没有考虑受众更加广的 Spring Boot 来支持 tomcat10 ?
原因一: Spring 虽然是号称的轻量级的 web 框架,但是由于起功能众多,依赖体系过于庞大,内存占多并不小得
原因二:如果切换到 Spring 的框架,那么在数据库层面的框架,可能就会选择 Spring JPA,这个库本身是基于 Hibernate,简化了 Hibernate 的 HQL,改为了更加轻量的 JPQL,但是包体积和内存占用也会上一个层次
原因三:考虑到后期会基于 GraalVM 来打包 native image 的可能,所以不应该有太多了包依赖,否则对于 native 来说挑战会更大,生成的 native image 的可执行二进制文件也会很大
小米加步枪(SimpleWebServer)就能搞定的活,用不上航空母舰(Spring Boot)
基于上面的种种原因,ZrLog 在选择是否要继续使用 JavaEE(JakartaEE)这种标准的 servlet 库上,选择了更加轻量,定制程度更高的 SimpleWebServer,及放弃了 JakartaEE 这条标准的 web 容器路线,在迁移到 SimpleWebServer 后 ZrLog 无论是包体积,还是内存占用,都小了一个层次,定制化方面反而并没有因为 SimpleWebServer 的功能简单,受到限制,反而在实现某些功能方面更加的方便了,比如 静态化/gzip,又或者全站静态化方面都更加的容易了
ZrLog 由于使用非标准的 Servlet 容器,所以从 3.0 版本开始不再会有 war 提供,仅提供 zip 包,和 Docker 安装方式,建议使用 Docker 方式进行安装,更安全/稳定,以及升级更加便捷
新特性
- 全新的后端技术方案(SimpleWebServer + Apache DbUtils),带来了更小的包体积
- 将 Java 运行版本的最低版本调整为 Java 21,以支持 Java 的 Loom 特性,带来了更小的内存使用
- 升级管理后台,安装引导页面,插件管理 antd 的版本,页面更接近现在审美(相比之前的小圆角)
- 默认加入了 gzip,页面加载会更快,更节省服务器带宽
- 新增了阿里云的 oss 上传插件
- 可定制管理后台的主颜色,看腻了默认(拂晓蓝)的,可以调整一个自己更喜欢的颜色
- 默认主题的
bootstrap
升级到了支持暗黑模式的版本
优化
- 优化了对于静态化缓存的存储逻辑
- 针对管理后台的 cra 到包生成静态资源文件进行了浏览器为期一年的缓存,使得页面打开更快
- 调整写文章界面的保存草稿逻辑,保存变更更加的及时和稳定
- 优化写文章界面的样式,更加简介美观
- 使用 css-in-js 替换 less,在相对弱网环境下,页面展示更加稳定,加载更快
- React Class Component,调整为了更加简洁明了的 Function Component,同时改为了约束更加严苛的 typescript
- 优化管理后台文章的检索逻辑,支持文章别名检索
- 基于 css-in-js 的方案,暗黑模式更简洁,更彻底
- 编辑器的 fontawesome,调整了 svg,同时按需导入,不再是为了中午吃顿米饭,就要买一粮仓的大米
- 移除 craco 打包,改为 cra 打包
- 升级 MySQL/HikariCP/Gson 等库
- 移除 Log4j/Apache HttpClient/htmlcleaner/jdom/cos 等库
- 调整了备份数据库插件的生成的文件名
- 修复已知问题
其他
- 移除了对子目录的支持
- 移除 /post/ 的重复二级路由
- 使用 Github actions 进行打包(以前是自建 jenkins 打包),打包变的稳定
你懂的
有需求,觉得还不错的,赶快点下 star 收藏下,免得下次就找不到了
- GitHub: https://github.com/94fzb/zrlog
- 码云: https://gitee.com/94fzb/zrlog
- 程序主页: https://www.zrlog.com
- SimpleWebServer: https://github.com/94fzb/simplewebserver
最后
上一张启用暗黑模式下的优化后的文章撰写界面截图

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MiniFramework 2.10.0 已经发布,超轻量级的 PHP 框架
MiniFramework 2.10.0 已经发布,超轻量级的PHP框架 此版本更新内容包括: 新增常量 ERROR_PAGE,默认值为空,用于声明自定义错误页面。 新增支持输出自定义错误页的特性。 新增自定义错误页的示例代码。 新增 Mini\Base\Response 类的 charset() 方法,用于在响应头中自定义字符编码。 新增 Mini\Base\Rest 类的 response() 和 type() 方法,对输出进行统一封装。 调整错误信息输出方式,当启用 REST 模式对 API 接口请求遇到异常时,将以 JSON 格式输出错误信息。 改进 Mini\Base\App 类的 dispatch() 方法,支持传入参数带入 Action 中。 改进 Mini\Base\App 类,增加名为 isApi 属性,用于判断当前请求是否为 REST 接口。 改进 Mini\Base\Action 类的 forward() 方法,支持跳转时传递参数。 改进 Mini\Base\Rest 类,在构造阶段即将默认的 json 方式传递给 Response 对象。 改进 Mini\Bas...
- 下一篇
MiniFramework 2.10 已经发布,超轻量级的国产 PHP 框架
MiniFramework 2.10 已经发布,超轻量级的国产 PHP 框架 此版本更新内容包括: 版本变化 新增常量 ERROR_PAGE,默认值为空,用于声明自定义错误页面。 新增支持输出自定义错误页的特性。 新增自定义错误页的示例代码。 新增 Mini\Base\Response 类的 charset() 方法,用于在响应头中自定义字符编码。 新增 Mini\Base\Rest 类的 response() 和 type() 方法,对输出进行统一封装。 调整错误信息输出方式,当启用 REST 模式对 API 接口请求遇到异常时,将以 JSON 格式输出错误信息。 改进 Mini\Base\App 类的 dispatch() 方法,支持传入参数带入 Action 中。 改进 Mini\Base\App 类,增加名为 isApi 属性,用于判断当前请求是否为 REST 接口。 改进 Mini\Base\Action 类的 forward() 方法,支持跳转时传递参数。 改进 Mini\Base\Rest 类,在构造阶段即将默认的 json 方式传递给 Response 对象。 改进 M...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7