• SpringBoot 2.0 开发案例之百倍级减肥瘦身之旅


    前言

    为了存我的小黄图,最近在做一款图床服务,集成了各种第三方云存储服务,目前正在内部测试阶段。项目是以Jar的形式运行在腾讯云上,不要问我为什么使用腾讯云了,因为阿里云老用户和狗不得入内。

    问题凸显

    因为内测期间代码逻辑会经常变动,这就免不了重新打包上传,虽然家庭是百兆带宽,奈何云服务器上行带宽有限制啊,总有那么几分钟不开心。

    瘦身之旅

    瘦身前,项目差不多得 54MB 的样子,以后可能越来越肥胖!!!那怎么办? 程序员作为一个懒人职业,总会想到一些办法来搞定问题。

    首先我们正常打包,解压 Jar 包,把 BOOT-INF 目录下的 lib 目录拷贝出来,这个后面会用到。

    然后排除项目第三方依赖包,pom.xml 引入:

    <plugin>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-maven-plugin</artifactId>
    	<configuration>
    		<mainClass>com.itstyle.picture.Application</mainClass>
    		<layout>ZIP</layout>
    		<!--排除项目第三方依赖包-->
    		<includes>
    			<include>
    				<groupId>nothing</groupId>
    				<artifactId>nothing</artifactId>
    			</include>
    		</includes>
    	</configuration>
    	<executions>
    		<execution>
    			<goals>
    				<goal>repackage</goal>
    			</goals>
    		</execution>
    	</executions>
    </plugin>
    

    打包完成之后,target 目录下生成了一个仅有 7.5MB 的文件,不要问我为什么还这么大,因为静态资源占了大部分,其实业务代码仅有几百KB而已。

    你以为这样就完了吗,显然没有。对于解压后十几兆的静态文件我们完全可以排除掉,pom.xml 继续引入:

    <!--
        排除静态资源
        爪哇笔记:https://blog.52itstyle.vip
    -->
    <resources>
         <resource>
           <filtering>true</filtering>
           <directory>src/main/resources</directory>
           <excludes>
             <exclude>static/**</exclude>
           </excludes>
         </resource>
    </resources>
    

    这时候 target 目录下生成的是一个仅仅有356KB的小东西!!!以后,无论什么云都是秒传了。

    虽然项目秒传了,但是要想让它正常访问,我们还需要做一步,把静态文件单独上传,放置到Nginx服务下,实现项目的动静分离。

    server {
            listen       80;
            server_name  www.cloudbed.vip;
            location / {
                proxy_pass http://127.0.0.1:8080;
            }
            #静态文件交给nginx处理
            location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ioc|rar|
    		    zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
    	    {
    		    root /cloudbed/static;
    		    expires 30d;
    	    }
    	    location ~ .*.(js|css)?$
    	    {
    		    root /cloudbed/static;
    		    expires 1h;
    	    }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    }
    

    运行

    lib 目录和瘦身的 Jar 包,上传到项目目录下,运行下面命令:

    java -Dloader.path=/cloudbed/lib -jar /cloudbed/cloudbed.jar
    

    小结

    54MB7.5MB再到356KB是不是爽翻了!!!编译速度也从十几秒下降到两三秒,基本上来说是秒编。以后,如果需要变更业务逻辑,编译、打包、上传秒秒中搞定。对于程序员来说,时间真的很宝贵,几秒中搞定的事情,绝对不能让它过分。

  • 相关阅读:
    树莓派上使用docker部署aria2,minidlna
    在Ubuntu上部署一个基于webrtc的多人视频聊天服务
    解决.net core3.1使用docker部署在Ubuntu上连接sqlserver报error:35的问题
    .Net Core in Docker
    .Net Core in Docker
    SQL Server in Docker
    使用Docker运行SQL Server
    Spring Boot 2.x(四):整合Mybatis的四种方式
    Spring Boot 2.x (一):HelloWorld
    yarn (npm) 切换设置镜像源
  • 原文地址:https://www.cnblogs.com/smallSevens/p/11790394.html
Copyright © 2020-2023  润新知