Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

html の minify をやめる #27

Closed
saki7 opened this issue Oct 31, 2017 · 11 comments
Closed

html の minify をやめる #27

saki7 opened this issue Oct 31, 2017 · 11 comments
Assignees

Comments

@saki7
Copy link
Contributor

saki7 commented Oct 31, 2017

from #26

HTMLのminify処理自体が慣例としてもうあまり推奨されていないので、 minifyを丸ごと消すべきだと思います。何故推奨されなくなったかというと、いくつか理由があるのですが、

  • 大体の Web サーバはデフォルトで gzip する
  • CDN (github pages なども含む) に置く場合に html のサイズはほぼ無視できる
  • スマホの普及とインターネット速度の底上げ
  • HTML は minify すると文脈が壊れる
    • もともと HTML においては空白文字が意味を持っている
    • 例えば HTML のタグの間にスペースが1文字あるかないかで CSS の解釈が変わる

特に最後の理由が大きいです。基本的に HTML の空白文字の有無の仕様に依存するCSSを書くのはバッドノウハウではあるのですが、それを除いてもやはり minify はしない方が良いです。

サイドバーを抜き出す前にこれをやってしまうと流石にまずいので、サイドバーは動的にロードする必要あり (#28)

再生成が4倍速になるという情報あり (#26)

@saki7
Copy link
Contributor Author

saki7 commented Nov 9, 2017

blocks #46, #45

@saki7
Copy link
Contributor Author

saki7 commented Nov 12, 2017

@melpon Sidebar v2 の実装は終わったので、html内の現行のサイドバーの埋め込みを丸ごと消してください。

@saki7
Copy link
Contributor Author

saki7 commented Nov 12, 2017

消し方としては、 <div class="tree"> は自身を含め全て消して良いです。その直上親要素の <div class="col-sm-3 col-sm-pull-9"> が空になると思うので、中身が空の状態でそのまま残してください。そのままでも動きますが、ついでに id="sidebar" と付けておくと後でメンテしやすくなります。

@saki7
Copy link
Contributor Author

saki7 commented Nov 12, 2017

ああ、あと、minifyも消してください。僕の計算が正しければ、cpprefjp1ページあたりのファイルサイズが500KBから30KBくらいになるはずです。

@melpon
Copy link
Member

melpon commented Nov 13, 2017

了解です。

@melpon
Copy link
Member

melpon commented Nov 13, 2017

サイドバーの出力と minify をやめました 411bb39
サイドバー、スクロールが効かないのはこの変更のせいではないですよね…?

@saki7
Copy link
Contributor Author

saki7 commented Nov 13, 2017

@melpon id=sidebarは、親要素に付けてください。子要素に新しくdivを掘ってしまうとそっちがサイドバーとして認識されてしまうので、正しくCSSが適用されません。(サイトバー=ツリーではなく、サイドバーはツリーを包含)

説明不足でした。

@melpon
Copy link
Member

melpon commented Nov 13, 2017

あー、そう指定されてたことは分かってたんですが base.html 編集するのが面倒だったのでそうしてしまいました。スクロールが効かなくなるぐらい重要な要素とは思ってなかったので…。
修正しときます。

@saki7
Copy link
Contributor Author

saki7 commented Nov 13, 2017

何が親要素で親要素が何を包含しているのか、小要素の数が幾つかという点はCSS3ではすごく重要です。

昔は「これは左、これは右」という書き方で済んでいたのですが、インターネットが複雑になるに連れて「この要素は子要素を均等に配分して、左右のスペースは右に集約する、余ったスペースは子要素に2:2:1で配分する、ただし最後の要素は自動拡張しない」というように、"意味"でフロントエンドを作る必要が出てきたのです。

という……蛇足でした。

@melpon
Copy link
Member

melpon commented Nov 13, 2017

修正ed 5ddbfc6

@saki7
Copy link
Contributor Author

saki7 commented Nov 13, 2017

ありがとうございます。本番直ってました。

補足ですが、僕の上記の説明を厳密に適用した場合、バックエンドのフローとしては disable_sidebar ではなく disable_tree という扱いにした方が適切です。

この点は、いまは問題が起きていないのでノータッチで良いのですが、新たに最低限のナビゲーションを静的に埋め込む実装をする時には、確実に直す必要があります。 cpprefjp/kunai#16

一応近い未来のためのメモということで。

対応ありがとうございました。基本的にバックエンドに由来した問題は起こらないはずなのですが、何か問題が起きたら教えて下さい。

@saki7 saki7 closed this as completed Nov 13, 2017
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

2 participants