个人网站性能优化经历(5)其他优化

自己搭建了一个基于SpringBoot+Spring Security+MyBatis+MySQL+Redis+Thymeleaf的博客网站
上线个人云服务器后,发现服务器访问慢。个人服务器是1核2G的,1M宽带,虽然服务器是低配的,但是可以通过优化代码,中间件等手段,来提升性能。

这篇主要讲其他方面的优化
一、服务器优化

GZIP(GNU- ZIP)是一种压缩技术。经过GZIP压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多。GZIP数据压缩可以对前端的静态资源,服务器资源等进行压缩,压缩之后,访问速度会增快,在nginx的http模块进行配置

#gzip  on;
# 开启Gzip
gzip on;
# 压缩临界值,大于1K的才压缩,一般不用改
gzip_min_length 1k;
# 设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间
gzip_buffers 4 16k;
# 用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项,目前此项基本可以忽略
#gzip_http_version 1.0;
# 设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大
gzip_comp_level 2;
# 设置需要压缩的MIME类型,非设置值不进行压缩
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
gzip_vary off;
# IE6对Gzip不怎么友好,禁止对它Gzip了
gzip_disable "MSIE [1-6]\.";
二、代码优化

经过之前的优化经验,比如减少与数据库的交互,那么,同样的,在系统中用到redis,也可以同样减少与redis的交互
之前的代码

/**
 * 获得redis中的文章内容
 */
public Object getArticleOnRedis(String key, Object field) {
    boolean articleExist = hashRedisServiceImpl.hasHashKey(key, field);
    if (articleExist) {
        return hashRedisServiceImpl.get(key, field);
    }
    return null;
}

优化后的代码

/**
* 获得redis中的文章内容
*/
public Object getArticleOnRedis(String key, Object field) {
    // 减少交互
    return hashRedisServiceImpl.get(key, field);
}

之前是在redis中根据key获取值,获取值之前,还要判断key存在不存在,如果存在,则根据key查找,并返回值,如果不存在,那么直接返回null。虽然判断逻辑写的够详细,但是这样写代码,反而更加臃肿了,索性直接从key查找,直接返回,减少判断,减少与redis的交互。

三、开启thymeleaf缓存

thymeleaf是一个模板引擎,开启缓存,也就是说加载一次模板之后便不会再加载了。系统上线之后,没必要一直加载模板,所以打开模板引擎缓存就可以了。

# Templates reloading during development
spring.thymeleaf.prefix=file:src/main/resources/templates/
spring.thymeleaf.cache=false

# Static resources reloading during development
spring.resources.static-locations=file:src/main/resources/static/
spring.resources.cache-period=0
四、修改redis连接池最大活跃数
#redis配置
spring.redis.database=0
spring.redis.port=6379
spring.redis.pool.max-active=8000
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=0

自己试过用Jmeter进行压测的时候,访问量过多,会把redis压垮,增加连接池最大活跃数,一定程度上能有效防止并发数过多而导致的宕机。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

exodus3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值