0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Chromeが特定サイトだけ巨大化して見えるときの意外な原因

Posted at

はじめに

ある日、大学の公式サイトを開いたら、なぜか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

※私の環境では GPUCacheLocal 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で確認できます

  1. 開発者ツールを開く(⌘ + Option + I
  2. Command Palette (⌘ + Shift + P)
  3. Show Rendering」を選択
  4. Paint Flashing」または「Layer Borders」にチェック

このサイトでは、かなりの要素がGPUレイヤー(緑や紫)で描画されているのが分かります。

まとめ

  • 特定サイトだけ崩れる場合、GPUCache/Code Cacheの破損を疑う価値あり
  • GPU依存が強いWebサイトほど影響を受けやすい
  • Chromeは便利だが、内部キャッシュが壊れるとレンダリングが狂うことがある
  • キャッシュ削除でChromeが“リセットされる”ように復活する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?