前言css
爲了存個人小黃圖,最近在作一款圖牀服務,集成了各類第三方雲存儲服務,目前正在內部測試階段。項目是以Jar的形式運行在騰訊雲上,不要問我爲何使用騰訊雲了,由於阿里雲老用戶和狗不得入內。html
問題凸顯java
由於內測期間代碼邏輯會常常變更,這就免不了從新打包上傳,雖然家庭是百兆帶寬,奈何雲服務器上行帶寬有限制啊,總有那麼幾分鐘不開心。nginx
瘦身之旅程序員
瘦身前,項目差很少得 54MB 的樣子,之後可能愈來愈肥胖!!!那怎麼辦? 程序員做爲一個懶人職業,總會想到一些辦法來搞定問題。spring
首先咱們正常打包,解壓 Jar 包,把 BOOT-INF 目錄下的 lib 目錄拷貝出來,這個後面會用到。服務器
而後排除項目第三方依賴包,pom.xml 引入:maven
<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而已。ide
你覺得這樣就完了嗎,顯然沒有。對於解壓後十幾兆的靜態文件咱們徹底能夠排除掉,pom.xml 繼續引入:spring-boot
<!-- 排除靜態資源 爪哇筆記: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
小結
從54MB到7.5MB再到356KB是否是爽翻了!!!編譯速度也從十幾秒降低到兩三秒,基本上來講是秒編。之後,若是須要變動業務邏輯,編譯、打包、上傳秒秒中搞定。對於程序員來講,時間真的很寶貴,幾秒中搞定的事情,絕對不能讓它過度。