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是不是爽翻了!!!編譯速度也從十幾秒下降到兩三秒,基本上來說是秒編。以後,如果需要變更業務邏輯,編譯、打包、上傳秒秒中搞定。對於程序員來說,時間真的很寶貴,幾秒中搞定的事情,絕對不能讓它過分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章