记录优化SpringBoot项目优化导出图片为zip格式接口总结
问题分析:第一次接口导出时间大概为7s左右。我的想法是从接口出发,慢慢到了service层,我发现service层在和dao层交互的时候花了挺多时间的。仔细一看,service去dao层查询数据的时候(与数据库打交道的用的是JPA),请求了很多次数据库。他把查询数据库的方法放在了for循环里面。这样就浪费了很多时间。
我的解决方案:降低与数据库之间的交互,一次取出我所需要的数据。然后我修改查询sql,将与数据库的交互降低。
问题分析2:经过上面的修改,接口导出时间降为5.5秒左右,较之前快一点点。这还是没有达到我的要求,我继续寻找问题所在。我发现在该项目的导出工具类中用的是InputStream 和 servletOutputStream,没有任何的包装。
我的解决方案:进行优化首先想到的是利用缓冲区 BufferInputStream。在 FileInputStream中 read()方法每次只是读取一个字节。用BufferInputStream可以一个读取多个字节,降低与磁盘的交互次数。部分代码片段如下:
for (int i = 0; i < 循环次数; i++) {
try