Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

フォントの転送コストを圧縮するには #4

Closed
hfu opened this issue Aug 14, 2018 · 4 comments
Closed

フォントの転送コストを圧縮するには #4

hfu opened this issue Aug 14, 2018 · 4 comments

Comments

@hfu
Copy link
Owner

hfu commented Aug 14, 2018

Mapbox GL JS で日本語注記の入った地図サイトを配信する場合、地図サイト起動時の転送コストのざっと4割くらいはフォントにとられる感じです。これにチャレンジするにはどうすればよいでしょうか。

@hfu
Copy link
Owner Author

hfu commented Aug 14, 2018

gzip 圧縮送信の強制

ひとつには、多くのベクトルタイルサーバでベクトルタイルをそう扱っているのと同様、Content-Type レスポンスヘッダで gzip 圧縮を強制するという案があります。これをやると、転送量をかなり削減できるそうです。

フォント使用の遅延

これは、具体的にどのようにするかは検討する必要がありますが、フォントを読みに行く前に、フォントを必要としないデータの描画を済ませることで、フォント転送待ちが気にならないようにするということです。

ブラウザがよくなるのを待つ

例えば、しっかりキャッシュしてもらうための仕組みが整うのを待つ、ということですね。さらに、現在手に入るキャッシュコントロール技術をしっかり使っているか、というのもチェックしてみる価値があるかもしれません。

クリティカルレンダリングパスを意識して実装する

無駄な地図のレンダリングをしないように、 クリティカルレンダリングパスを意識して実装することも有効だと思われます。

フォントデータをいじる

フォントの分けかたを細かくするだとか、本当に使うデータだけ詰め込むだとかも論理的に考えられます。ただし、これをやると言語依存・データ依存が発生してしまいそうなので、なるべく避けたほうがよさそうですね。

@hfu hfu closed this as completed Aug 14, 2018
@tattii
Copy link

tattii commented Aug 16, 2018

Mapbox GL JSでも日本語/中国語のフォントのダウンロードのコストについて議論されています。
mapbox/mapbox-gl-js#3466

解決方法の1つが、ローカルにあるフォントを使用することです。
localIdeographFontFamilyを設定できるよう実装されています。
https://www.mapbox.com/mapbox-gl-js/example/local-ideographs/

@hfu
Copy link
Owner Author

hfu commented Aug 17, 2018

@tattii
やってみました!できたような気がします。これは、ありがたいです。
https://hfu.github.io/ideo/#16.82/34.710299/135.51049

@hfu
Copy link
Owner Author

hfu commented Aug 17, 2018

フォント設定を調整してみました。詳細は #12 をご覧ください。
https://hfu.github.io/ideo/universal.html#16.63/35.617835/139.777232

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants