国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > CSS > 正文

讓 Chrome 崩潰的一行 CSS 代碼

2024-07-11 08:31:37
字體:
來源:轉載
供稿:網(wǎng)友

一般的 CSS 代碼只會出現(xiàn) UI 版式或者兼容性方面的小問題。但這里我們要分享一行有趣的 CSS,它可以直接讓你的 Chrome 頁面掛掉 :)

復現(xiàn)

    在 Chrome 里打開一個稍復雜的頁面,比如知乎或者 掘金 打開開發(fā)者工具,為頁面 <body> 增加樣式 style: "width:1px; height:1px; transform:scale(10000)" 欣賞任務管理器里 Chrome 崩潰前的內存占用

其實這臺機器只有 8GB 內存,不過這不重要了。和讓 JS 崩潰的紅線容量 4GB 比起來,果然還是 CSS 更強大呢 :)

故事

這行代碼的發(fā)現(xiàn),源自于我們的編輯器項目在實現(xiàn)畫布尺寸調節(jié)時的一個詭異現(xiàn)象:用戶調節(jié)畫布尺寸時, 只要新舊尺寸之比超過一定幅度,Chrome 就會卡死 。

雖然這個問題很難由普通用戶的操作路徑觸發(fā),不過它所導致的后果確實比較嚴重。排查時我們首先考慮了 JS 阻塞和 DOM 重繪過頻等方面的可能性,但它們都不是問題所在。一個突破點在于調試器 Rendering 工具中 FPS Meter 的輸出:


 

這里 GPU Memory 被占滿了。雖然這個提示信息現(xiàn)在看來很明顯是與硬件加速有關的,但在沒有相關經(jīng)歷的情況下我們還是沒有確定它與具體代碼之間的關聯(lián)。直到我們偶然查看 Chrome 設計文檔中關于 Compositing 的介紹時,發(fā)現(xiàn)了一個行為:Blink 會將 DOM 節(jié)點映射到 LayoutObject 的渲染樹,這棵樹中的節(jié)點理論上每個都能具備到渲染后端的上下文,但為了節(jié)約資源 Chrome 會將它們做一些合并后再渲染。而這時存在 CSS 定位(如絕對定位與 transform)的元素是不能合并的,這會造成對顯存的額外開銷。

基于這個信息的提示,我們使用 Layout 工具來調試當時的頁面,果然找到了一個特殊的地方:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 桦川县| 陈巴尔虎旗| 玛纳斯县| 商都县| 潞城市| 龙川县| 海门市| 泾源县| 沙河市| 双流县| 五指山市| 论坛| 洪江市| 阿拉尔市| 翁牛特旗| 益阳市| 辽源市| 大城县| 新和县| 双牌县| 彭泽县| 青河县| 皋兰县| 环江| 伊金霍洛旗| 巴彦县| 玉龙| 烟台市| 庄浪县| 临武县| 苍梧县| 沙雅县| 志丹县| 晋中市| 沧源| 达拉特旗| 定日县| 仙桃市| 汉川市| 开平市| 奎屯市|