fex-team / fis3

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

png-compressor插件是不是应该在preprocessor阶段处理,不然标准化处理后,png图片在optimizer阶段生成了新的hash文件名,标准化处理的png图片的uri将失效 #864

Open qinyadong opened 8 years ago

oxUnd commented 8 years ago

这样就失去了 optimizer 阶段的意义了,实际上压缩以后确实会文件内容变化;但是,md5 是一锤子的事情,第一次产生后,后续如果文件路劲不变是不会变的。除非两个过程中间有删除缓存。如果不是刻意在代码处理过,这种情况理论上不存在。

qinyadong commented 8 years ago

你使用过uri吗,虽然我还没读过源码,但从我的实际经验看,uri是在标准化阶段处理的,然而这个阶段产出生成的文件名hash应该是通过原文件计算hash得到的,但是最终产出了生成的文件名是png压缩后新生成的文件hash,因为只产出最终一个版本的文件,所以通过__uri得到的文件名hash不正确,它只是过渡阶段的产物

oxUnd commented 8 years ago

__uri 也同样是一个原理,不然几乎就无法用了。你可以把你遇到问题的代码提交上来,我们看看排查排查。

qinyadong commented 8 years ago

image image 代码是公司的内部代码,不是很方便放出来,但是我可以拿出证据

qinyadong commented 8 years ago

第一张图里的图片路径是在js文件里通过__uri的方式嵌入的

qinyadong commented 8 years ago

或者我有时间再写个简单的demo吧

gongph commented 5 years ago

@qinyadong @xiangshouding 你好问下,fis.plugin('png-compressor') 插件跟 Node 版本有关系吗?发现一个问题,我本地环境:

服务器上的 Node@10.0.0+ ,Fis3的版本相同,打包后压缩报错:

[ERROR] optimizer.png-compressor: _handle.PngCompress is not a constructor [/home/jenkins/xxx/imgs/003.png]