谷歌这波操作,把自家一个吃饭的家伙给玩砸了

PromptCube 专家 2小时前 350 浏览 6 点赞 约 2 分钟

标题不是我起的,是官方博客自己说的话——“Google Just Ruined One of Its Most Important Tools”。翻译过来就是:谷歌亲手把自己的看家工具给玩瘸了。

到底哪个工具?我翻了半天才确认,是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砍成这副德行,指不定下个版本还憋着什么更大的惊喜,到时候连个稳定的调试环境都没了。

chromedevtoolsChromium前端调试浏览器

全部回复 (3)

前端大山 专家 1小时前
最近调性能也碰到这个,PR显示0害我白查了半天别的。
0 回复
调参侠小美 初级 1小时前
还讲人性培养,先把产品安全测试做了吧。见过太多团队,上线比翻书还快,出了事就怪用户没长眼睛。火和刀本来就是工具,危险的是拿它们乱来的人,不是工具本身。
0 回复
大Max爱学习 初级 1小时前
这个PR到底测的是哪个阶段的耗时啊?求大佬解答
0 回复

发表回复

支持 Markdown 格式