欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-27 20:40:16
前言 为了存我的小黄图,最近在做一款图床服务,集成了各种第三方云存储服务,目前正在内部测试阶段。项目是以Jar的形式运行在腾讯云上,不要问我为什么使用腾讯云了,因为阿里云老用户和狗不得入内。 问题凸显 因为内测期间代码逻辑会经常变动,这就免不了重新打包上传,虽然家庭是百兆带宽,奈何云服务器上行带宽有 ......

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

前言

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

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

问题凸显

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

瘦身之旅

瘦身前,项目差不多得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是不是爽翻了!!!编译速度也从十几秒下降到两三秒,基本上来说是秒编。以后,如果需要变更业务逻辑,编译、打包、上传秒秒中搞定。对于程序员来说,时间真的很宝贵,几秒中搞定的事情,绝对不能让它过分。

上一篇:

下一篇: