您好,登錄后才能下訂單哦!
前言
為了存我的小黃圖,最近在做一款圖床服務,集成了各種第三方云存儲服務,目前正在內部測試階段。項目是以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
小結
從54MB到7.5MB再到356KB是不是爽翻了!!!編譯速度也從十幾秒下降到兩三秒,基本上來說是秒編。以后,如果需要變更業務邏輯,編譯、打包、上傳秒秒中搞定。對于程序員來說,時間真的很寶貴,幾秒中搞定的事情,絕對不能讓它過分。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。