优化点1,数据确定放在redis
@Override
@Cacheable(value = Consts.Cache.CITY_DATA,unless="#result == null")
public List<Region> cityData() {
Region region = new Region();
region.setType("5");
List<Region> list = this.regionMapper.selectRegionList(region);
List<Region> result = new ArrayList<>();
for(Region r : list){
if(Objects.equals(r.getGrade(),"10")){
result.add(r);
}
}
for(Region r : result){
buildAreaTree(r,list);
}
return result;
}
设置以后可以看到的变化就是没有查询sql,取而代之的是redis生成key的日志keyGenerator
@Configuration
public class CacheConfig extends CachingConfigurerSupport {
@Resource
private RedisConnectionFactory factory;
/**
* 自定义生成redis-key
*
* @return
*/
@Override
@Bean
public KeyGenerator keyGenerator() {
return (o, method, objects) -> {
StringBuilder sb = new StringBuilder();
sb.append(o.getClass().getName()).append(".");
sb.append(method.getName()).append(".");
for (Object obj : objects) {
sb.append(obj.toString());
}
System.out.println("keyGenerator=" + sb.toString());
return sb.toString();
};
}
}
优化点2,把json无用的字段就不序列化了
@JsonInclude(_JsonInclude.Include._NON_EMPTY)
类上加上这个注解
@JsonIgnore
没用的字段加上这个注解
可以有效缩短json的大小
这个案例大概减少了30%的大小吧
优化点3,后端增加http压缩
springboot的jar包形式
server:
compression:
enabled: true
tomcat的war包形式
在server.xml中,在Connector标签中加入如下属性
compression=”on”
compressionMinSize=”2048”
compressableMimeType=”text/html,text/css,text/javascript”
结果
这个是优化完的
这个是没有做后端压缩的
最开始什么都没优化的时候是700多k,1-5秒的响应时间
总结
优化还是比较有意思的,就是费时间