前言

为了存我的小黄图,最近在做一款图床服务,集成了各种第三方云存储服务,目前正在内部测试阶段。项目是以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是不是爽翻了!!!编译速度也从十几秒下降到两三秒,基本上来说是秒编。以后,如果需要变更业务逻辑,编译、打包、上传秒秒中搞定。对于程序员来说,时间真的很宝贵,几秒中搞定的事情,绝对不能让它过分。

最新文章

  1. (转)CNBLOG离线Blog发布方法
  2. Android中将xml布局文件转化为View树的过程分析(上)
  3. linux tcp协议状态机
  4. BZOJ1015 [JSOI2008]星球大战starwar
  5. 微软职位内部推荐-SDE2 (Windows - Audio)
  6. asp.net中@ Import 命令的使用
  7. 刑事案件的构成要素 zt
  8. ADO.NET—两种连接模式
  9. JS排序算法
  10. ddos攻击和cc攻击的区别和防护!!
  11. Winform常用的一些功能收集(持续更新)
  12. Android 异步消息处理机制终结篇 :深入理解 Looper、Handler、Message、MessageQueue四者关系
  13. Vue 报错[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders
  14. Tomcat 本地运行正常,服务器部署后乱码问题
  15. 过滤器手动注入Service Bean方法
  16. 一条命令,根据进程名判断有进程输出up,无进程无输出
  17. day3 反射与动态代理
  18. 两台openwrt 间的免登陆ssh
  19. duilib bkimage 属性
  20. Oracle体系结构之参数文件管理

热门文章

  1. IDEA 学习笔记之 Spark/SBT项目开发
  2. 294 div2 C. A and B and Team Training
  3. 基于Linux的kfifo移植到STM32(支持os的互斥访问)
  4. WampServer配置可局域网访问站点
  5. 探讨Microsoft Solution Framework(MSF)框架下管理的秘密
  6. js二次作业
  7. Windows下计划任务的使用
  8. PHP list的赋值
  9. 【Python秘籍】十进制整数与二进制数的转换
  10. opencv::直方图均衡化