メインコンテンツへスキップ

たった1KBが驚きの差に!ウェブページの読み込み速度、14KBと15KBでこれほど違う

·3 分
2025/07 ウェブパフォーマンス サイト軽量化 HTML CSS JavaScript

たった1KBが驚きの差に!ウェブページの読み込み速度、14KBと15KBでこれほど違う

引用元:https://news.ycombinator.com/item?id=44613625

susam 2025/07/19 10:11:04

俺のHPは圧縮後7.0kBで、結構いい感じだと思うよ!Common Lisp製の自作静的サイトジェネレーターでブログとか作ってるんだ。KaTeX使うと347.5kBも増えるけどね。数学コンテンツだけなんだけど、サーバーサイドレンダリングを考えた方がいいかもな。大学時代からのプロジェクトで、HTMLもCSSも手書きで、余計なものは入れないようにしてるんだ。
[1] https://susam.net/
[2] https://github.com/susam/susam.net/blob/main/site.lisp
[3] https://susam.net/tag/mathematics.html

welpo 2025/07/19 10:24:42

数学コンテンツでKaTeXを使ってるみたいだけど、MathMLを試してみたらどうかな?
これなら容量削減になるかも。詳細はこのURLを見てくれよな!
https://w3c.github.io/mathml-core/

susam 2025/07/19 12:27:44

MathMLは使いたいけど、LaTeXから自動生成したいんだ。LaTeXの方が書きやすいからね。でもMathMLはブラウザによって表示がバラバラで、特に積分記号のサイズとか変なんだ。修正しようとするとKaTeXを使うのと同じくらい手間がかかるし、結局KaTeXやMathJaXでサーバーサイドレンダリングしてHTMLとCSSを送るのが一番かなと思ってるよ。
https://mk12.github.io/web-math-demo/

AnotherGoodName 2025/07/19 14:55:07

今や数式はLLMに頼りっぱなしだよ。LLMはすごく得意で、LaTeXやMathMLの構文は忘れちゃいそう。例えば”MathML for {方程式のテキスト}”って聞くと100%正確なMathMLをくれるんだ。フォーマット変更もCSS追加もお願いすればやってくれるから、超便利だよ!

BlackFly 2025/07/19 11:08:26

KaTeXはサーバーサイドでもクライアントサイドでもMathMLに変換されるんだよ。HTMLタグの羅列より、LaTeXみたいなTeX方言の方が数式記述には向いてるってのが一般的なんだよね。

mr_toad 2025/07/19 11:57:49

サーバーサイドレンダリングにすれば、277KBのKaTeXライブラリは不要になるね。クライアントに送る追加のMathMLデータは、それよりずっと少ないはずだよ。

mk12 2025/07/19 12:10:08

俺の作ったツールで、君のサイトの例をKaTeXとブラウザのMathMLレンダリングでどう見えるか試してみたらどうかな?このURLからアクセスできるよ:
https://mk12.github.io/web-math-demo/

em3rgent0rdr 2025/07/19 15:40:52

このツール、いいね!“New Computer Modern”フォントだとLaTeXに一番近いけど、括弧の周りのスペースが広すぎるのが気になるな。LaTeXはスペースを細かく調整できるのに。あと、f(x)の^ハットの位置もおかしいんだ。これって直せるの?

mk12 2025/07/25 13:41:26

俺も同じ問題を見てると思うけど、括弧のスペースがおかしくなるのは、不要な\leftや\rightを使ってる時なんだ。そうするとMathMLに余計な<mrow>が増えるんだよ。本当に必要ないなら使わない方が、ずっと見た目が良くなるよ。

em3rgent0rdr 2025/07/26 02:33:02

ありがとう、特別な\leftと\rightの括弧が原因だったよ。

djoldman 2025/07/19 11:34:32

クライアントサイドJavaScriptで数式やLaTeXを表示するのって、全然理解できないんだ。なんでHTMLとCSSに事前に変換しておかないんだろうね?

susam 2025/07/19 13:22:40

(前のコメントへの返信)それはできるよ。でも僕の個人サイトは大学時代からの趣味プロジェクトでね、Common Lisp(CL)で構築してるんだ。結果だけじゃなく、プロセス自体を楽しむのが目的。HTMLやCSSの事前生成は可能だけど、Node.jsなどCLエコシステム外のツールは導入したくないんだ。このサイトは僕の遊び場だから、スタックをシンプルに保って楽しみたいんだよ。

whism 2025/07/19 16:47:09

別のホストでHeadless Chromeとか使ってレンダリングする小さなサービスを立てて、それがダメなときはクライアントサイドにフォールバックするのはどう?既存のサーバ環境を汚したくないって言ってたから提案してみたんだ。こういう最適化を見るのが好きなんだよね。

whatevaa 2025/07/20 16:56:12

君が提案してるのは、とんでもなく複雑さを増すことになるね。

dfc 2025/07/19 13:37:29

そのウェブサイトは君の情熱プロジェクトって言っていいかな?

mr_toad 2025/07/19 12:02:26

少し手間が増えるね。普通はNode.jsやBabelとか他のツールをインストールして、もし慣れてなければ使い方を学ぶ時間も必要になるだろうね。

creata 2025/07/20 00:22:22

数式をHTML+CSSやSVGにレンダリングするなら、Node.jsとMathJaxを使えばいいだけだよ。なぜBabelが必要なのかは分からないけど。(KaTeXも使えるだろうけど、僕はMathJaxの出力の方が好みだな。)

marcthe12 2025/07/19 14:38:05

まあMathMLってのもあるけど、最近までChromeでのサポートが悪かったんだ。あれはウェブサイトのネイティブな数式フォーマットだよ。

creata 2025/07/20 00:25:07

普段はHTMLやSVGにコンパイルする方が好きだけど、ページに数式がたくさんある場合、MathJaxをバンドルした方が容量が少なくて済むこともあるよ。(圧縮後もそうかは分からないけどね。)

popalchemist 2025/07/20 00:09:44

過度な最適化って意味ないこと多いよ。例えば、Latexの数式みたいに動的にレンダリングされるコンポーネントの遅延なんて、普通の人にはほとんど気づかれないんだ。SEO目的のパフォーマンス改善も、何百万回ものアクセスがあるようなものじゃないと、ぶっちゃけ無駄だよ。
船が漂流してて、食料調達したり浸水を防いだりしないといけない時に、船の空力特性を気にするようなもんだね。抽象的にはいいことだけど、必要なリソースと得られる利益を比べたら、エネルギーの使い道として賢い選択とは言えないよ。

hmmokidk 2025/07/20 15:12:06

人間はロボットじゃないんだから、面白くて楽しいことなら追求する価値あるよ。たとえそれだけであっても、話のネタになったり、学んだり、教えたりすることにも繋がるしね。

popalchemist 2025/07/20 19:14:54

非効率だとしても、やる理由はあるって、俺の最初のコメントでちゃんと書いてるだろ。

VanTodi 2025/07/19 10:57:45

別のアイデアとして、重いライブラリは初期ページ表示が終わってからロードするとかどうかな。まあ、それでも重いのは変わらないけどね。
あるいは、数式をSVGで作って、それがビューポートに入った時にロードするとか。これは俺の2セントだよ。

crawshaw 2025/07/19 09:17:37

これで遊んでみたいなら、initial window(IW)は送信側で設定できるよ。サーバーをウェブサイトに合ったパケット数に設定できるんだ。例えばこんな感じになるよ:ip route change default via <gw> dev <if> initcwnd 20 initrwnd 20
ウェブ検索だと、CDNはinitial windowが30パケットで、それで45KBになるって出てくるね。

sangeeth96 2025/07/19 11:21:19

CDNが30パケットで45KBになるって話、何か参照元あるの?

ryan-c 2025/07/19 12:59:13

わざわざ探さないけど、これは俺が読んだり観察したことと合ってるよ。自分の個人的なサイトでは20パケットに設定してるしね。

nh2 2025/07/19 21:58:27

13年前だと、10パケットは“チート”って言われてたんだってね:
https://news.ycombinator.com/item?id=3632765
https://web.archive.org/web/20120603070423/http://blog.benst

crawshaw 2025/07/19 22:05:13

今日のネットワークは変だよな。MTUは昔の10Mbps Ethernetに合わせて決まったのに、今でもそれがエンドユーザーに影響してるんだ。サーバーは10Gbps、多くの人は1Gbps使ってるのにさ。
MTUが小さすぎてIWもおかしくなってる場合もあるから、1Gbps以上のリンクを使ってる消費者にはもっと高いMTUを設定すべきだね。AWSみたいにクラウドプロバイダーはMTU高いし(AWSは9001)、できるはずだよ。

mjevans 2025/07/20 00:49:37

要するに、Ethernet(802.3)から完全に切り替えないといけないってこと。
Jumboフレームでさえサイレントコリプションに弱いんだよね。URL:https://en.wikipedia.org/wiki/Jumbo_frame#Error_detection
当時はすべてがずっと遅くて高価だったから、あの決定は良かったんだけどね。

もっとコメントを表示(1)
londons_explore 2025/07/19 11:16:25

悪い奴になって、MTUを1000パケットに設定しちゃえよ…。
ダイヤルアップ接続でバッファブロート起こしてる人を詰まらせる以外、特にデメリットはないはず。

notpushkin 2025/07/19 12:04:02

これってひどいアイデアに聞こえるけど、具体的に何がダメなのか誰か教えてくれない?

jeroenhd 2025/07/19 12:27:28

標準外の設定は、ミドルボックスを壊したり、セキュリティ脅威としてブロックされたりする可能性があるよ。
携帯キャリアの変なプロキシ(特に4G未満)もモバイル接続をダメにするかも。
遅い回線だと再送地獄で接続が止まるし、ISPルーターのバッファを埋めて他の接続まで遅くしたり切ったりする可能性もあるね。

r1ch 2025/07/19 16:10:12

TCPの輻輳制御、特にスロースタートは、80年代のダイヤルアップ時代からの遺物だね。
ISPのリンクが50KBのバーストトラフィックを処理できないなら、アップグレードすべきだ。輻輳を前提とするのはおかしい。
スロースタートを無効にして、パケットロスに依存しないBBR輻輳制御を使えば、TCPスループットが劇的に変わるよ。

notpushkin 2025/07/20 04:27:38

スロースタートって、ウェブサイトの肥大化と戦うのに良い動機付けになるかもね。
「ページサイズを300KB以下にすれば、1往復で読み込めるよ」みたいに簡単な成功体験を与えられたら、もっと多くのフロントエンド開発者が考えてくれるんじゃないかな。(まあ、大して変わらないだろうけどね。)

buckle8017 2025/07/19 12:24:30

そうすると、接続開始時の輻輳制御を無効にするようなもんだね。
遅い接続だと、それがちょっと困るんだよ。
バッファの問題が起きるか、パケットが落ちるかのどっちかになるだろうね。

tonymet 2025/07/19 20:15:46

ソフトウェア開発者はメディア層をもっと意識すべきだ。
3G/5Gの信頼性やレイテンシの話は重要だよ。
HTTPではパケット順序が大事で、RESTリクエストが1パケットになるのは1400バイト未満の時だけ。それ以上だと複数パケットになり、再送などでUI更新が遅れる。
Chrome Dev Toolsで3Gモード+パケットロスを試せば、小さな最適化でもUI応答性が改善するよ。
だからAPIやUIはできるだけ小さくすべきだね。

zigzag312 2025/07/20 08:30:07

同感。記事には良い情報もあるけど、14KBのウェブページを例にするのはイマイチだね。
APIリクエストの方が良い例になると思う。

tonymet 2025/07/20 19:43:14

極端な話だけど、UIにも当てはまるよ。最初の画面表示に必要な要素を14KB以下にするのは大事だね。例えば、CSSを含んだindex.htmlとかさ。

GavinAnderegg 2025/07/19 11:40:07

14KBは厳しい目標だけど、最初の10パケットに収めるって考えは面白いね。ページサイズに力を入れてる512kb.club [1] は、サイトのサイズをゴルフみたいに競うんだ。俺のサイト [2] は全アセットで71KBちょっとだったよ。このプロジェクトのおかげでCloudflare Radar [3] も知ったけど、これ、サイト分析にめちゃくちゃ使えるツールだよ。

mousethatroared 2025/07/19 14:27:58

ユーザーじゃないんだけど質問。残りの500KBで俺らユーザーに何してくれてるの?
90%はテキストに興味あるし、残りはほとんどベクターグラフィックで十分でしょ。14KBでもかなり多くのテキストとグラフィックの量だよ。他の500KBは何に使ってるの?

filleduchaos 2025/07/19 15:35:36

テキストはそうだけど、グラフィックはね…。SVGは、基本的な図形より複雑だと、みんなが思ってるほど小さくないし、ベクターグラフィックで表現できないものも多いんだ。テキストだけのページが良いってのは分かるけど、『グラフィックも』ってのは、俺はかなり非現実的だと思うな。

LarMachinarum 2025/07/19 21:16:10

SVGがどれくらい得になるかはコンテンツ次第だよ。複雑なSVGでもめちゃくちゃ効率良い時もあれば、残念な時もある。ただ、生のSVGは冗長だけど、HTTP転送ではラスタ形式画像(圧縮済み)とSVG(未圧縮)を比べるのは不公平だね。SVGはBrotliみたいな高性能圧縮とも相性抜群だし、事前に圧縮されたファイルを使えばサーバーの負担も減らせるよ。

mousethatroared 2025/07/19 20:10:38

ベクターグラフィックってのは、シンプルなグラフィックのことだよ。YouTubeとかTwitter以外で、凝ったものなんていらないし。俺にとってHacker Newsはウェブの理想なんだ。選択肢があれば、ほとんどのユーザーもそう思うんじゃないかな。

whatevaa 2025/07/20 17:30:53

いや、君は間違ってるよ。俺も含めて、ほとんどのユーザーはHacker Newsより凝ったものが好きなんだ。

nicce 2025/07/19 14:37:02

もしウェブサイトで、複数の言語に対応した凝ったコードブロックのシンタックスハイライターを使いたいなら、それだけでそのくらいのサイズになるよ。正規表現のルールとか、正規表現エンジンとかね。

masfuerte 2025/07/19 14:46:50

エンドユーザーとしては、バックエンドで一度だけハイライトしてくれるウェブサイトが良いな。

ssernikk 2025/07/19 17:53:13

俺はフォントに使ってるよ。俺のウェブサイト [0] は、圧縮されたHTMLとCSSが約15KBで、フォントが200KBもあるんだ。

mousethatroared 2025/07/19 20:09:21

フォントの読み込みなんて気にならないな。正直、ブラウザにフォントを読み込まない設定があって、デフォルトのフォントを使うオプションがあったら、20回中19回はそれを選ぶね。

ndriscoll 2025/07/20 01:41:23

Firefoxにはそのオプションがあるよ。一番困るのは、一部のウェブサイトがシンボルにカスタムフォントを使ってることだね。

timeon 2025/07/20 00:52:29

15kBの圧縮HTML + CSSかあ。クラスがCSSを重複させてなければ、14kBより少なくできたはずなのに。

Brajeshwar 2025/07/19 14:52:39

個人サイトなら512kbは十分達成可能だよ。次の目標は99kb(上限100kb)にすること。数週末あれば結構簡単にできるはず。俺のサイトは512kbでオレンジ色ゾーンって感じ。

FlyingSnake 2025/07/19 14:23:45

これ、わかるわ。俺も512kbがもっと現実的なベンチマークだと思うし、自分のサイトもそうしてる。現代のウェブは、14kbのウェブサイトなんてとっくに昔に超えちゃってるからね。

tgv 2025/07/19 10:36:42

これ、別の理由かもね: https://blog.cloudflare.com/russian-internet-users-are-unabl
Cloudflareの分析によると、ロシアのISPはインターネットユーザーがWebアセットの最初の16KBしか読み込めないようにスロットリングしてるらしくて、ほとんどのウェブナビゲーションが不可能になってるんだって。

notpushkin 2025/07/20 04:32:09

うーん、Cloudflareはロシア向けのトラフィックのために、パケットサイズとか初期ウィンドウとか、なんか他の設定を増やせないのかな?

9dev 2025/07/19 08:55:49

TCP Slow Startを知らない人と、ウェブサイトの読み込み速度が数ミリ秒速くなるのを気にする人が重なることは、ものすごく少ないよ。スタートアップは、まず「始めること」に集中すべきで、パフォーマンスじゃない。そのレベルで速度を最適化するような大企業には、経験豊富なSREのチームがいるから、どの詳細にこだわるべきか分かってるはずだよ。

anymouse123456 2025/07/19 11:49:34

パフォーマンスがどうでもいいっていう考え方、ほんとイラつくんだよね。そうやってDockerやKubernetesとか、触るもの全てをぶっ壊してる絶対的なクソスタックができちゃったんだ。パフォーマンスは大事なんだよ。何十年もKnuthの最適化に関する名言を誤解し続けて、ハードウェアの性能が5~6桁も上がったのに、未だに遅くて肥大化した欠陥だらけのソフトウェア製品を作り続けてる。パフォーマンスは実際に重要で、他の条件が同じなら速い製品の方が気持ちいいでしょ。幸い、Figmaの連中みたいにリスクを取ってそれを証明してくれた人もいる。たとえ難しい技術的問題を革新してる時でも(ほとんどの人はそうじゃないけどね)、パフォーマンスはやっぱり大事だよ。

elmigranto 2025/07/19 09:27:13

だよね。だから、例えばMicrosoftのソフトウェアは完璧に動作して、最高の効率を出してるんだよね。

9dev 2025/07/19 09:32:39

俺が言ったのはさ、担当エンジニアはどんなトレードオフをしてるかちゃんと分かってて、その能力もあるってことだけだよ。

mr_toad 2025/07/19 12:10:42

コンテナってさ、VMがコールドスタート遅くてメモリ食いすぎだったから生まれたんだぜ。性能が最優先ってことだよな。

もっとコメントを表示(2)
samrus 2025/07/19 10:14:24

スタートメニューにReactを使ったのは能力じゃなくてさ、担当者がTwitterで『知ってるから使っただけ』って言ってたんだよ。何も考えてないってことだよね。
https://x.com/philtrem22/status/1927161666732523596

jeroenhd 2025/07/19 12:02:18

『もっと大事なことあるから気にしない』ってスタンスだと、結局何も気にしなくなるんだよな。企業的にはTCPウィンドウサイズに合わせた最適化より、いつだって他の優先事項があるんだ。だから最近のアプリやサイトはどれもこれも遅くて最悪なんだよ。

bobmcnamara 2025/07/19 14:59:04

VMみたいにコンテナってライブフォークできるの?VMのクローンはメモリコピーやめればめっちゃ速いんだぜ。あとはNICを排出して新しいの起動するだけだしな。

SXX 2025/07/19 10:05:47

これな。まさにMicrosoftが何十億人も使うStart MenuにReact Nativeみたいなモダンなフレームワークを使う理由だよ。

marcosdumay 2025/07/19 15:53:28

ま、0.5秒って小さい差じゃん。だからサイト専属の人ができるまでは、もっと優先すべきことあるだろうな。『今のアプリやサイトはどれもこれも遅くて最悪』って言うけど、過剰最適化不足よりもっとウェブには問題があるんだよ。

hinkley 2025/07/19 17:06:07

クラウドプロバイダーが代わりにやってるのかも。OpsからAWSがホストOSのセキュリティアップデートを適用すると聞いて、クラスター再デプロイ要るか聞いたら、もう終わってたって。うちのクラスターはプロセスの起動時間を記録してて、その朝は再起動なかったんだ。テーブルクロス引き抜き術みたいな感じだったよ。TIL。

zelphirkalt 2025/07/19 12:01:26

パフォーマンスは重要だけど、コードを複雑にしすぎない範囲でね。だからシンプルな静的サイトが最新フレームワークのサイトに勝つことも多いんだ。維持が大変だし、アクセシビリティやプライバシー、倫理面で犠牲を払うこともあるから。不合理な性能低下は避けるべきだけど、使い物にならなくなったり、やることに対して複雑になりすぎたりするほど性能にこだわりすぎるのは良くないよ。

ldjb 2025/07/19 10:45:29

このTweetは本気じゃないし、Start Menuの開発者でもなさそうだよ。もし違う証拠があるなら教えてほしいな。

mort96 2025/07/19 19:44:46

コンテナのライブフォークとか、俺には全然魅力ないな。クラウドホスティング会社じゃないし、もしそうでもコンテナじゃなくてVMでVPSを提供したいよ。

anymouse123456 2025/07/19 15:39:41

コンテナは本来速く簡単にするはずなのに、仮想化の魅力で作業がめちゃくちゃ遅く悪くなった。Googleみたいな大企業ならわかるけど、中小企業には100%無駄で破壊だよ。両方経験したけど、コンテナが役立つ場面なんて、ごくわずかだよ。

andrepd 2025/07/19 09:19:41

「十分大きな企業には経験豊富なSREチームがいる」って言うけど、そうだと良いんだけどね。最近の大企業のアプリ見たことある?って感じだよ。

the_real_cher 2025/07/19 11:23:13

注意しとくけど、Xは4chanより荒らしが多いんだからね。

hinkley 2025/07/19 16:54:01

これがSteamOSがハンドヘルド機でWindowsを完全に圧倒してる理由なんだよ。

01HNNWZ0MV43FF 2025/07/19 14:29:16

Dockerって、実はいい感じなんだよ。

wiseowise 2025/07/20 15:05:00

なんで?ネイティブ原理主義者たちが言うように、RNより酷いウェブベースのUIを使ってるからなの?

chamomeal 2025/07/19 12:21:36

待ってくれ…これって、すごく変なジョークだって言ってくれよ、頼むからさ。

anymouse123456 2025/07/19 15:52:08

いやー、Dockerは、今みんながOOでの失敗を振り返ってるみたいに、後で「あれはまずかったな」って後悔する時が来るんじゃないかな。

anymouse123456 2025/07/19 15:46:45

パフォーマンス向上は問題どころか、コードをシンプルにして理解しやすくするんだ。高パフォーマンスなソフトウェアは、コード量を減らし、概念を単純化し、実行時間を短縮する。これはトレードオフじゃなくて、どこまでも価値があること。長年パフォーマンスを無視してきたせいで、今のひどいソフトウェアが生まれたんだ。

mort96 2025/07/19 15:04:59

この動画を見つけたよ: https://www.youtube.com/watch?v=kMJNEFHj8b8&t=287s
話してる人たちはMicrosoftのソフトウェアエンジニアだから、彼らの話を疑う理由はないね。スタートメニュー全体がReact Nativeってわけじゃないけど、一部はそうみたいだよ。

hinkley 2025/07/19 19:46:06

機能を自分で使うか、ベンダーに使ってもらうか、その価値を否定するかのどれかだよ。それ以外の考え方は矛盾してるね。

hinkley 2025/07/19 16:51:45

>0.5秒は小さな違い
どこから手をつけていいか分からないよ。ほとんどの人は合計レスポンスタイムで0.5秒以下を目指してるんだ。そもそもウェブアプリケーション開発してるの?

marcosdumay 2025/07/19 16:00:25

前のと全く同じコンテナを新しく作るってこと?それは可能だけど、そんなコマンドがあるツールは多分ないんじゃないかな…だって何のためにやるの?コンテナ内でプロセスをフォークするのと、大体同じ結果になるよ。

Mawr 2025/07/19 21:39:58

”10年以上前、Amazonは100ミリ秒の遅延が売上の1%減につながると発見した。2006年には、Googleが検索ページの生成時間で0.5秒余分にかかると、トラフィックが20%減少することを見出した。”

firecall 2025/07/19 09:34:35

なんてこった…俺のホームページ、17.2KBだよ!依存関係抜きでね。ちなみに個人的なホームページをめちゃくちゃ最適化したら、Lighthouseスコアが全部100/100になったんだ。Railsで構築したのに、以前はこんなの不可能だと思ってたよ笑。自分のサイトを最適化するのは、本当に価値がある。体感できる遅延なしでページが読み込まれるのは、本当に気持ちいい体験だからね!

apt-apt-apt-apt 2025/07/19 10:33:52

うん、news.ycombinator.comが即座に読み込まれるの、俺の脳みそがめっちゃ喜んで、休憩中についつい自動的に開いちゃうんだ。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。