fex-team / fis3

FIS3
http://fis.baidu.com
BSD 2-Clause "Simplified" License
2.79k stars 694 forks source link

项目越来越庞大,首次编译耗时太长 #1052

Open lengjing opened 7 years ago

lengjing commented 7 years ago

随着需求的增加,项目文件不断增加,首次编译的时间太长了大概有80s左右,怎么破?

lengjing commented 7 years ago

并且增量编译耗时也在5s左右 :cry:

mudoo commented 7 years ago

这是得有多大。。。用了cssspriter跟压缩?

lengjing commented 7 years ago

@mudoo dev 模式下已经关掉了csssprites和压缩,我用verbose看了下增量编译的时候spriter.csssprites 和 postpackager.loader 耗时很长 q44s9hq0vqb 9im2 _xv p node 6.9.2

lichking1201 commented 7 years ago

node_modules里包太多了吧,第三方包禁止产出就好

lengjing commented 7 years ago

@lichking1201 无node_modules包

renxia commented 7 years ago

这种情况下,应当使用按需编译的配置方式,核心点示例:

// 设置项目源码文件过滤,按需编译
fis.set('project.files', [
    'view/*.html',  //只处理 html 类型文件,根据 html 引用依赖分析其他文件
    'public/static'
]);

这样,只有存在于 html 文件中的引入路径链的文件才会编译输出。 另外,开发模式下,不要使用 -c 参数,以利用编译缓存

lengjing commented 7 years ago

大致找到问题所在了,首次编译耗时过长是因为文件太多,设置了 project.filescache 后可以减少一半耗时。但是增量编译却还是很慢,debug下发现“编译”步骤是增量的,但是“输出”步骤确是全量的,由于项目文件太多输出的这个过程大概占用了整个增量编译耗时的90%。如果能做到只输出被“影响”的文件那应该会快很多,我看了下初始化后的文件对象只有Dependencies,如果把Dependents加上应该就可以实现了吧 :slightly_smiling_face:

450671491 commented 7 years ago

我也有同样的问题,时间更长,不知道楼主的解决了么?

lengjing commented 7 years ago

@450671491 没有好的解决方法。我把增量编译依赖解析关掉了,这样做需要不停的重启服务如果依赖有更新的话

oxUnd commented 7 years ago

开发期间可以关闭压缩、合并等处理流程;