コメントを投稿するにはログインが必要です
ログインページへ
八百万のOSS毎日使っているのに、ブラウザが中で何をしているか実はよく知らない——そんな話から始まる今回。
catatsuyが取り上げるのは、ChromiumやFirefoxが裏側で扱っている「巨大なデータ」です。
ブラウザはHTMLを描画するだけでなく、HTTPSへ強制するドメイン一覧、危険URLのリスト、証明書の失効情報、よく使われるリソースURLパターンなど、さまざまな補助データを持っています。しかし、それらを単純な巨大リストとしてそのまま持つのは難しく、毎回サーバーへ問い合わせるのもレイテンシやプライバシーの問題があります。
今回はHSTS Preload、Google Safe Browsing、CRLite、Pervasive resource URL patternsなどを題材に、巨大なデータをブラウザがどう持ち、どう配り、どう高速に判定しているのかを話しました。
HSTS Preloadのドメイン一覧とsuffix判定、Safe Browsingのhash prefix、CRLiteのBloom Filter cascade、そしてURL patternによるリソースURLの扱いなど、暗号やTLSだけではない、ブラウザを支えるデータ構造と配布設計を覗いていきます。
trie treeやBloom Filterといったデータ構造の話も出てきますが、完全な仕様解説ではなく、ブラウザの裏側にある設計の面白さを見ていく回です。
ブラウザの中身に興味が湧いてくる、盛りだくさんなお話です。
* Chromium: https://www.chromium.org/
* Firefox: https://www.mozilla.org/firefox/
* HSTS Preload: https://hstspreload.org/
* Google Safe Browsing: https://safebrowsing.google.com/
* CRLite(Firefox): https://github.com/mozilla/crlite
* Certificate Transparency: https://certificate.transparency.dev/
* Trie: https://en.wikipedia.org/wiki/Trie
* Bloom Filter: https://en.wikipedia.org/wiki/Bloom_filter
* Pervasive resource URL patterns: https://chromium.googlesource.com/chromium/src/+/HEAD/services/network/pervasive_resources
* Brotli: https://github.com/google/brotli
* Zstandard (zstd): https://github.com/facebook/zstd
* Hono: https://hono.dev/
* jQuery: https://jquery.com/
* Rust: https://www.rust-lang.org/
─────────────
YouTube: https://youtu.be/NH1yseBycOw
Web: https://yaoyorozu-oss.henteko07.com/
X: https://x.com/yaoyorozu_oss