zrlog 3.0 发布,全新技术架构,2024年了,一个仅使用 64m 内存就可以正常运行的博客系统

/ 2024-01-21

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 收藏下,免得下次就找不到了

最后

上一张启用暗黑模式下的优化后的文章撰写界面截图

转载请注明作者和出处,并添加本页链接。
原文链接: //blog.zrlog.com/zrlog-3-0-released.html