はじめに
ある日、大学の公式サイトを開いたら、なぜかUIが巨大化して崩れているのに気づきました。ズームも100%、拡張機能も影響していない。シークレットモードでも同じ。別のプロファイルでは正常位表示される。。
この記事では、「特定サイトだけ拡大して表示される」謎のChromeバグを調べ、修復した記録をまとめます。
発生した現象
対象サイトはこちら:
発生時の様子はこんな感じでした
- ページ全体の枠やサイドバーが拡大して重なっている
- 他のサイトは正常
- Chromeのズーム設定は100%
- シークレットモードでも再現
再起動しても直りませんでした。
まず疑ったことと試したこと
最初はよくある原因を順に疑いました。
| 試したこと | 結果 |
|---|---|
| ズームレベルを確認(100%) | 問題なし |
| 拡張機能をすべてOFF | 改善せず |
| キャッシュ・Cookie削除 | 改善せず |
| シークレットモードで検証 | 同じく崩れる |
| 別のプロファイルで開く | 正常表示 |
「プロファイル依存の問題」だとわかりました。
chrome://version で原因を追う
次に「どのプロファイルが壊れているのか」を特定するために
アドレスバーに以下を入力しました。
chrome://version
ここで表示される「プロフィールパス」に注目します。
/Users/TaiyoYamada/Library/Application Support/Google/Chrome/Default
どうやら、メインの Default プロファイルに問題があるようです。
決定打:GPUCacheとCode Cacheの破損
調べていくうちに、同様の症例を発見しました。
「特定サイトだけレイアウトが崩れるのは、GPUCache や Code Cache の破損が原因の可能性あり」
これらは、Chromeが高速化のために作る内部キャッシュです。
| キャッシュ名 | 内容 |
|---|---|
| GPUCache | CSSのアニメーションやfilter, transformなどのGPUシェーダーをキャッシュ |
| Code Cache | JavaScript / Wasm のコンパイル済みコードをキャッシュ |
これが壊れると、特定のCSSレイヤーだけ拡大される・座標が狂うといった症状が起きるらしい。
実際にやった修復手順(macOS)
① Chromeを完全に終了
⌘ + Q でChromeを終了。
念のためアクティビティモニタで残っていないか確認します。
② Finderでプロファイルフォルダを開く
Finderのメニュー → 「移動」→「フォルダへ移動...」
以下を貼り付けて「移動」をクリック
~/Library/Application Support/Google/Chrome/Default
③ 以下のフォルダを削除
GPUCache
Code Cache
Cache
Local Storage
※私の環境では GPUCache と Local Storage しか存在しませんでした。
バージョンによって違うみたいです。
④ Chromeを再起動
なんと…… 一発で直りました。
大学のサイトが、まるで何事もなかったかのように正常なUIに。
なぜこのサイトだけ影響を受けたのか?
調べたところ、このサイトは以下のようにGPU依存がやや強い構成でした。
-
transform,filter,opacity,clip-path,box-shadowなどを多用 - スクロール時にフェードイン・スライドイン演出がある
-
vh,vwレイアウトが多く、リサイズごとに再描画が走る
これらの要素は、ChromeがGPUレイヤーを作成して描画します。
そのため、GPUCacheに壊れたシェーダーが残っていると誤描画が起きやすい。
つまり:
他のサイトではCPU描画だったから問題なかったが、
このサイトはGPU描画が多いので壊れたキャッシュが直撃した。
GPUCache と Code Cache の役割(簡潔に)
HTML → Layout → Skia → GPUCommandBuffer → ShaderDiskCache(GPUCache)
↘︎ V8 JIT → Code Cache
- GPUCache: GPU用シェーダープログラムをキャッシュ
-
Code Cache: JSエンジン(V8)の最適化済みコードをキャッシュ
→ どちらも壊れると「レイアウトずれ」「描画サイズ誤差」「奇妙なズーム」が発生する。
DevToolsでGPU描画を確認する方法
Chrome DevToolsで確認できます
- 開発者ツールを開く(
⌘ + Option + I) - Command Palette (
⌘ + Shift + P) - 「Show Rendering」を選択
- 「Paint Flashing」または「Layer Borders」にチェック
このサイトでは、かなりの要素がGPUレイヤー(緑や紫)で描画されているのが分かります。
まとめ
- 特定サイトだけ崩れる場合、GPUCache/Code Cacheの破損を疑う価値あり
- GPU依存が強いWebサイトほど影響を受けやすい
- Chromeは便利だが、内部キャッシュが壊れるとレンダリングが狂うことがある
- キャッシュ削除でChromeが“リセットされる”ように復活する