网络调优(提升跨城市网页加载速度、数据库连接性能)
起因
测试服务器、测试数据库部署在另外一个城市的云主机上,本机访问远程网络资源仅限50K/秒。蜗牛一样的网络速度,终于无法忍受,只能处理之。
正在开发的一个项目其他前端同事使用以往项目遗留下来的vue2工程改造,打包后的一个最大的js文件有2.7M,更新后,基本上要刷新n次,历经几个小时才能正常使用。
同一个项目,我自己使用基于vue-admin-beauty开发的demo,最大js文件有3M多,更新后,成功刷新也要几个小时。
同一个项目,我自己又使用最新版SDP(生成vue3前端)开发了同样功能的demo,最大js文件500K,不用几个小时,但是也很慢。
启用nginx压缩后,这些网页10秒内都能成功刷新。
nginx启动gzip压缩
在nginx.conf的http项目下配置:
gzip on;
gzip_types text/plain text/css application/javascript application/json text/json;
这些types需要根据自己的情况进行修改,因为这些虽然都是通用的,但是服务端开发是有可能返回定制化的类型(例如最后一个),最好是在客户端浏览器按F12,启动调试,逐个查看每个url是否启用了压缩。
我好奇看了一下其他网站,公司的一个商城启用了gzip压缩,另外一些内部开发的企业管理网站多数没开启gzip压缩。
政府网站看了两个,一个开启了gzip压缩,一个没开启。
那些开启了gzip的,说明技术人员知道如何调优网页加载性能,也是负责的。没开启的,一种是真不懂,可能也懒得懂。另外一种可能懂,但是就不开:可以用来申请更高的配置、带宽、扩容,反正没人真正关心。。。
mysql jdbc启动压缩
这个情况比较少见,主要是向我们这样的:本地没有硬件服务器,服务资源都在远程。java程序需要在本地调试,数据库却在远程。启用压缩和不启用压缩性能相差几倍。配置方法是在jdbc url中加入useCompression=true参数。在网上找了一圈没找到如何开启的文章,最后还是看mysql jdbc源代码找到如何配置:
package com.mysql.cj.conf;
public class PropertyDefinitions {
...
public static final String PNAME_useCompression = "useCompression";
...
}
修改后的配置如下:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://10.10.10.10:3306/testdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai&tcpKeepAlive=true&autoReconnect=true&useCompression=true