谷歌这波操作,把自家一个吃饭的家伙给玩砸了
到底哪个工具?我翻了半天才确认,是Chrome DevTools。
不是那个部署调试经常用到的DevTools,是现在打开任何网站的开发者工具,瀑布图里多了个红字:PR 0.00ms。字面意思,所有请求的Priority全变0了。等于告诉所有写前端的人:我谷歌不打算让你知道你的页面加载优先级了。
先说下背景。Chrome 最近把网络面板里的Priority标志悄悄砍了,只留下一个默认的 0.00ms。这个值原来是为了展示每个资源在加载链路里的调度顺序,你调图片懒加载、调脚本预加载、调字体阻塞方案,全靠看这个字段判断资源抢没抢CPU。现在它归零了,等于你开着导航上路,仪表盘突然把转速表拆了。
更恶心的是,如果开发者真的想查资源加载优先级,现在得自己去翻 chrome://net-export 从头导日志,然后导入到 netlog viewer 里去手工比对。这不是优化,是逼你学会读原始网络日志。不想学?那就别查了,认命吧。
我做了一套本地代理的排查流程,勉强缝缝补补能用:
一、确认是不是版本问题
google-chrome --version二、如果你还在用旧版,先把自动更新掐了
sudo apt-mark hold google-chrome-stable三、想查优先级就开netlog再对比,这比DevTools难用十倍但能用:
chrome --log-net-log=/tmp/netlog.json然后再用官方的 netlog_viewer 打开那个json。谁要说这一步“好用”,我敬他是条汉子。
有意思的是hacker news上有人拆了Chromium的源码,发现这个字段并没有删除,只是被藏起来了:变成了kValue,所有开发者工具可见的地方一律输出0。就是说引擎知道优先级,但就是不给你看。这个改动连个解释都没有,我猜Chrome团队是怕大家用这个功能排查“高优先级资源被降级”的问题,因为现在很多请求优先级其实是动态算出来的,他们不想再拿老接口去误导人。
我是真没搞懂谷歌图啥。DevTools是Chrome相对开放的一个口子,几乎所有前端性能优化教程里都少不了这个面板。砍掉它对Ads和搜索业务没半毛钱好处,倒是把一堆做性能咨询的工程师推向Lighthouse和WebPageTest——哦,这些本来也不是谷歌自家的。
你说它这是故意的吧,逻辑又不通;说它是不小心吧,一个版本上线的改动没被任何人拦下来,本身就说明大厂内部对这个工具的重视程度已经跌到断崖了。
工具能用,生态不一定要继续用。Chrome DevTools对开发者还是那个最强的浏览器调试器,只是它已经不再是那个“值得信赖的现状窗口”了。要把一切网络行为的打开过程看清楚,大概率得回归到最笨的办法——抓包。
发个链接,是Chromium的issue原文,感兴趣自己翻翻某条评论:
https://bugs.chromium.org/p/chromium/issues/detail?id=355275453反正我先把Chrome家的自动更新关了,DevTools砍成这副德行,指不定下个版本还憋着什么更大的惊喜,到时候连个稳定的调试环境都没了。