您当前的位置: > 新闻资讯

临沂网站优化 网站优化(四):SpringBoot优化和技术选择

小朱博客 2020-12-10 0 人已围观

简介 “,这是通过Spring的AOP面向切面统计的时间,在后台可以打印出调用了多少个方法,每个方法执行的耗时,这样可以快速定位到是哪个方法出了问题,对性能低下的方法进行优化,本篇只讲后端的内容,前端的性能优化和评测在后面连续更新中再写。

本文是一个连续的更新系列。根据“仁飞博客网站计划2020大更新”,它分为网络区域选择,云服务器配置优化,环境构造优化(JVM),缓存策略优化,SpringBoot配置优化和前端页面优化,分别讨论等等。

注意:本文仅基于我的个人经验分享,并非专业评估,请理解,某些内容不够专业。

上一篇文章完成了服务器的购买和配置。本文将介绍SpringBoot的优化和技术选择。选择了效率更高的Freemarker,增加了Redis缓存,增加了性能统计信息,并添加了Github的操作。工作流程。

前端引擎选择Freemarker放弃Thymeleaf

在以前的版本中,我使用Thymeleaf作为前端视图引擎。它可以很好地保留html静态文件的特性,从而可以直接打开html静态文件,可以将其与java代码分离,但是!截至我发稿时,Thymeleaf已有4年没有更新了。请参见下面的屏幕截图,执行效率总是让我感到它非常慢。我再次去了Freemarker,看看下面是否继续。

Freemarker的更新频率如下图所示。尽管不能说每天都在更新,但至少可以看出有人正在管理和更新。我试图比较Freemarker和Thymeleaf的执行效率。我觉得Freemarker快要在几秒钟内打开页面了,我在Internet上搜索了一些信息,发现有更多的人使用Freemarker,所以我选择了效率更高的Freemarker作为我的前端引擎。

使用Redis缓存

说到缓存,我必须先谈一谈场景,因为并非在所有地方都可以使用缓存,并且不使用场景直接添加缓存是无赖的。

此更新的重点是提高页面打开速度。使用缓存时,我需要分析自己的使用场景。我的个人网站和博客基本上是查询操作,没有繁琐的业务逻辑和交易。唯一要更新的是文章视图的数量,但是此值不需要准确且实时,并且缓存是完全可以接受的。与内存相比,磁盘IO非常慢,因此最好将热数据直接加载到内存中并随时使用。

然后可以选择缓存。我最早使用Memcache,后来Redis变得流行。尽管Redis将数据存储在内存中,但Redis具有更多数据类型。 Redis还可以定期将数据写回数据库,Redis可以定期(持久性)保存到磁盘,并且可以在丢失后通过aof恢复数据,如果Memcache遇到意外,数据将消失。然后比较流行度和SpringBoot支持,我选择了更流行的Redis作为缓存数据库。

对于缓存时间,每个人都有自己的想法,因为每个人都会遇到不同的流量。如果访问量很小并且时间很短,它将没有缓存的含义。如果缓存时间过长,则您担心更改的数据。它无法及时更新,例如浏览量和评论数据。我当前使用的缓存时间是2个小时,因为根据我的网站访问量,人们肯定会每小时访问一次。妥协之后,我决定将两个小时作为我的缓存时间。

提高效果统计信息

有些学生可能会担心,在我的网站页面的右下角会显示一行文字,例如“以0.001055秒处理,调用了6种方法。”这是一个方面。通过Spring的AOP面向对象的统计时间可以在后台打印出多少个方法被调用以及每个方法执行所花费的时间,以便您可以快速找到哪个方法有问题,并优化性能低下的方法。本文仅讨论后端内容网站优化,稍后将在不断更新中编写前端的性能优化和评估。

使用Github的动作工作流程

谈到网站页面的右下角,一些学生可能已经注意到“ Ver:1.0.24 Build:226”这一行。此更新主要优化效率,并且打包并部署了每个更新。找到Github的动作工作流程需要花费时间和精力。这是Github类似于CD / CI的自动化工作流程。这个Github还是很友善的。在我使用Travis-CI之前网站优化,速度非常慢,而Github提供的Actions性能非常高,似乎没有保留和速度限制,并且利用了编译速度,因此我在这里推荐Github的Actions工作流程。

使用Github的操作,每次发布版本时都会触发工作流程,自动执行Docker映像的编译,打包和上传,因此当前版本和编译时间戳记将显示在页面底部。

标签云