狠狠撸

狠狠撸Share a Scribd company logo
最適化はここまでしないと気が済ま
ない
5分で詰め込む
フロントエンド最適化手法
泰昌平 (@stai0823)
自己紹介
泰 昌平
ファンチーム株式会社 Webエンジニア
ダーツとバイクが好き
最近はCakePHPとPhalconをやっています
フロントのjavascriptが大好物
今日はフロントエンドを高速化する
テクニックについてお話しします。
どうしてフロントエンド?
?サーバのスペックを上げる
?高速な言語に変える
?高速なフレームワークに変える
高速化する方法はいくらでもある。
案件や环境に依存してしまう!
1.バックエンドの最適化よりも
高速化が期待できる
1.比較的少ない工数で高速化が図れる
2.モバイルでの表示速度を大幅に改善できる
フロントエンドの最適化を知っている
と
実际にやった事を绍介していきます
?HTML5を使用する
?省略可能タグは必ず省略
?minifyする
?レンダリングブロックの回避
?リクエストの削減
?dnsプリフェッチ機能
?gzip圧縮
?CDNを利用する
具体的になにをやったか
?HTML5を使用する
?省略可能タグは必ず省略
?minifyする
?レンダリングブロックの回避
?リクエストの削減
?dnsプリフェッチ機能
?gzip圧縮
?CDNを利用する
具体的になにをやったか
_人人人人人人_
> 5分の限界 <
 ̄Y^Y^Y^Y^Y^Y^ ̄
贬罢惭尝5でマークアップ
もはやド定番ですが、最適化の観点でいうと
?省略可能な属性が追加
?以前よりもタグをシンプルに記述できる
贬罢惭尝5でマークアップ ※ここは軽く流していきます
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<script type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="style.css">
例えば??
<!DOCTYPE html>
<script></script>
<link rel="stylesheet" href="style.css">
省略可能タグを彻底
<html>,</html>,<head>,</head>,<body>,
</body>,</li>,</dt>,</dd>,</p>,</option>,
</thead>,<tbody>,</tr>,</td>,</th> などなど。。
結構いっぱい省略できる
minify
?無駄なスペース?改行コード?コメントを全て消してお
く
→Google Closure Compiler
→YUI Compressor
?プラグイン?ライブラリも必ずminifyされたものを使う
?フレームワークなどを使用しているのであれば、View出
力の際に処理を加える
minifyをしよう
class AppHelper extends Helper {
public function afterLayout($layoutFile) {
parent::afterLayout($layoutFile);
if($this->_View) {
//出力するソースのタブ?スペース?改行を削除する
$this->_View->output =
str_replace(array("?n", "?t", ' '), '', $this->_View->output);
}
}
}
CakePHPの場合
リクエストを减らす
HTMLにインラインで記述する!
JSやCSSへのリクエストを最小限に!
→HTMLのファイルサイズが増大
→ソースが混在し、管理が難しくなる
→キャッシュが使えなくなる
?リクエストを减らす?
?外部ファイル化してキャッシュす
る?
どっちがベス
ト?
疑問に思ったら
teratail!
https://teratail.com/questions/15358
?外部ファイル化はキャッシュされるため速くなる
?ただし、初回はガッツリ読み込みに行くので遅くなる
Q.JSの外部ファイル化は本当に速い?
ベストアンサーに选ばれた回答
?一般的にはリクエストは少ないほうが良い
?外部ファイル化はケースバイケース。
→保守性を重視する場合は外部ファイル化
→アクセス数が多いサイトはインラインに記述する場合も
ある
ベストアンサー
诲苍蝉-辫谤别蹿别迟肠丑を使う
DNSプリフェッチ
?DNSの名前解決を事前に行うよう強制できる
?HEADタグの上部にprefetch用のタグを埋め込む
?実質、外部のリソースを読みに行っている箇所全てに有
効
<head>
<meta charset=”UTF-8”>
<!-- 出来る限りheadの上部に配置する -->
<link rel="dns-prefetch" href="//www.google-analytics.com">
<link rel="dns-prefetch" href="//www.googletagmanager.com">
<title>DNSプリフェッチ</title>
</head>
書き方
いかがでしたでしょうか
ご清聴ありがとうございま
した

More Related Content

5分で詰め込む フロントエンド最適化

Editor's Notes

  1. 結局これなんですよね。 案件や環境に依存してしまう。あとお金! そもそも実際に動いてるサイトに対してサーバとかを触ってしまうのはリスクが大きいですよね。
  2. ハイパフォーマンスWebサイというオライリーの本にも書いてあります。 Webでの待ち時間の8割がフロントエンドに費やされているという話があります。
  3. 勘違いされがちなのですが、実はHTML5以前でも省略できます。 liタグとかoptionタグとかは効果絶大です。
  4. 一番手っ取り早いのはインラインでJSやCSSを書いてしまうことです でも弊害があります。
  5. じゃあこれって結局どうすればいいのかと リクエストは減らせばいい?外部ファイル化
  6. 肠诲苍箩蝉.肠辞尘や骋辞辞驳濒别のヘルプページなどでも使われていたりします。
  7. headの上部にひたすら羅列することで効果を発揮します。 ここで指定するドメインは何でも良いです。 画像でもCSSでもJSでも、外部に読みに行っているものを指定すると効果的です。 これ、ウォーターフローが結構面白くなるのでお見せしたかったのですが、 ウォータフローをキャプチャするサイトが障害で取れなかったのでお見せできませんでした。。
  8. フロントエンドの最適化は検証されて、データのある手法が他にもたくさんあるので、非常に奥が深いです。 色々試してみてください。