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

Posted exodus3

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人网站性能优化经历其他优化相关的知识,希望对你有一定的参考价值。

自己搭建了一个基于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压垮,增加连接池最大活跃数,一定程度上能有效防止并发数过多而导致的宕机。

以上是关于个人网站性能优化经历其他优化的主要内容,如果未能解决你的问题,请参考以下文章

个人网站性能优化经历访问文章功能优化

个人网站性能优化经历CDN优化过程

个人网站性能优化经历Redis优化过程

个人网站性能优化经历Nginx中间件优化

个人网站性能优化经历插件的拓展

个人网站性能优化经历网站添加实用功能