最近在学习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,可见压缩力度还是挺大的。但是四秒的加载时间,还是过于长了,想想看还有没有其他办法进一步压缩了。
当然,解决的方法肯定不止这一个,如果大佬你还有什么好法子,请在评论区指导指导。