优秀的编程知识分享平台

网站首页 > 技术文章 正文

tomcat启用GZIP,解决js过大加载慢问题

nanyue 2024-07-18 22:05:30 技术文章 9 ℃

最近在学习cocos creator,并成功做出一款非常简单的小游戏,但是在放到云服务器后访问时,却发现加载异常慢。

经过查看network的瀑布图发现是因为cc.js体积过大导致的。2.8M的文件加载时间接近二十秒。

既然确定了问题是由于js的文件过大,那么解决的方式必然是针对如何减少或者压缩js体积为主。

1:首先考虑如何减少

cc.js包含的模块很多,其中可能就有我们没有用到的模块,这时可以选择把这些模块去掉,进而减小一些体积,当然这种方法效果并不是很大。

2:使用压缩

因为我是使用tomcat部署的程序,所以第一时间想到的便是使用GZIP进行压缩。

因为GZIP默认是不启动,那么怎么启用呢?

那就需要修改server.xml文件

找到Connector节点,注意,是你配置端口号的那个。红色标注的为新加的

<Connector port="8085" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

compression="on"

compressionMinSize="2048"

noCompressionUserAgents="gozilla,traviata"

compressableMimeType="text/css,text/javascript,application/javascript"

useSendfile="false"/>

解释:

#设置为on表示启用

compression="on"

# 进行压缩的最小值(单位B,默认2048,即默认2k)
compressionMinSize="2048"

# 不需要进行压缩的浏览器
noCompressionUserAgents="gozilla,traviata"

# 需要压缩的文件类型(多个类型以逗号分隔)(注意:如果是JS则注意使用text/javascript或者application/javascript,如果不确定可以在浏览器的检查资源加载瀑布图中查看

compressableMimeType="text/html,text/xml"


#默认情况下sendfile优先级高于压缩,所以当文件大小大于48KB时,就会放弃使用压缩。所以,如果你的文件是大于48KB但还需要使用压缩时,就设置此项。
useSendfile="false"

设置之后,js文件的大小被压缩到了685KM,可见压缩力度还是挺大的。但是四秒的加载时间,还是过于长了,想想看还有没有其他办法进一步压缩了。

当然,解决的方法肯定不止这一个,如果大佬你还有什么好法子,请在评论区指导指导。

最近发表
标签列表