优化点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
@Configurationpublic class CacheConfig extends CachingConfigurerSupport {@Resourceprivate RedisConnectionFactory factory;/*** 自定义生成redis-key** @return*/@Override@Beanpublic 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秒的响应时间
总结
优化还是比较有意思的,就是费时间

