2. about me
TaiHoon Kim kishu@navercorp.com
NAVER Front-End Platform
SADI HTML5 invited professor?
NHN NEXT WebUI Basic adjunct professor
Project Management Professional(PMP)
Front-End Development Group Sysop
http://facebook.com/groups/webfrontend
27. How AMP Speeds Up Performance
3rd Party JS をクリティカルパースから除外
3rd Party JS は sandbox iframe の内部だけ許可
親ページの実?を遮断しなくて性能に影響しない
CSS は HTML 内部スタイルシートのみ許可しサイズを制限
HTML ページの内部に style タグを?れて使?
スタイルシートのサイズは 50KB までに制限
Web フォントを効率的にダウンロード
ブラウザを遮断する HTTP リクエストが発?いないように Web フォントをダウン
ロード
29. How AMP Speeds Up Performance
スタイル再計算の最?化
不必要なレイアウト防?のため、先に測定をして変更を後に処理
フレーム毎スタイルので?度だけ再計算できるように保証
GPU 加速アニメーションのみ実?
ページのレイアウトが発?しない CSS アニメーションのみ使?
transform, opacity
30. How AMP Speeds Up Performance
リソーツのロード順番を制御
ダウンロードするリソースの優先順位を計算
重要なリソースからダウンロード
ページの即時ロード
preconnect API
取得するページをビューポート分だけインポート
32. AMP: CUSTOM ELEMENTS
export function registerElement(win, name, implementationClass) {
knownElements[name] = implementationClass;
win.document.registerElement(name, {
prototype: createAmpElementProto(win, name),
});
}
src/custom-element.js
export function installImg(win) {
registerElement(win, 'amp-img', AmpImg);
}
builtins/amp-img.js
33. AMP: CUSTOM ELEMENTS
Custom Element
BaseElement HTMLElement.prototype
AmpImg ElementProto
this.implementation_ = ?
new AmpImg();
AMP Components = HTML Custom Elements
52. AMP: OPTIMIZATION REFLOW
for (let i = 0; i < tasks.length; i++) {
if (tasks[i].measure) {
tasks[i].measure(states[i]);
}
}
for (let i = 0; i < tasks.length; i++) {
if (tasks[i].mutate) {
tasks[i].mutate(states[i]);
}
}