Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WordPress「超」スピードアップ術 ~のろまなカメと呼ばれないために~

WordPress「超」スピードアップ術 ~のろまなカメと呼ばれないために~

2017/5/27 に開催されたSaCSS Special Vol.11 の登壇資料です。

Hitoshi Omagari

May 27, 2017
Tweet

More Decks by Hitoshi Omagari

Other Decks in Technology

Transcript

  1. P r i m e S t r a t

    e g y C o . , L t d . W o r d P r e s s I n t e g r a t i o n D i v i s i o n 2 1.自己紹介
  2. 大曲 仁 自己紹介 3 t @jim0912 f hitoshi.omagari • WordCamp

    Yokohama 2010 実行委員長 • WordPress 日本語フォーラム 世話役 • WordCamp スピーカー
  3. P r i m e S t r a t

    e g y C o . , L t d . W o r d P r e s s I n t e g r a t i o n D i v i s i o n 8 2.スピードアップの必要性と考え方
  4. 9

  5. 1. ユーザー体験の向上 → 回遊率の向上 → 成約率の向上 2. サーバ負荷の軽減 → サーバ構成やスペックの縮小

    → コスト削減 3. 微SEO WordPressスピードアップの必要性と考え方 10 いいことずくめ
  6. P r i m e S t r a t

    e g y C o . , L t d . W o r d P r e s s I n t e g r a t i o n D i v i s i o n 13 3.ハードウェアによるスピードアップ
  7. P r i m e S t r a t

    e g y C o . , L t d . W o r d P r e s s I n t e g r a t i o n D i v i s i o n 16 4.PHP実行環境によるスピードアップ
  8. 処理速度 信頼性 将来性 × ◎ × ◦ ◎ ◎ ◎

    △ △ PHP実行環境によるスピードアップ PHP実行環境によるスピードアップ 18 HHVMでの動作検証は次バージョンから実施しないと明言
  9. 中間コードキャッシュ(OPcache) PHP5.5以上で利用可能 PHPのスクリプトをバイトコード状態でメモリに保持 PHP実行環境によるスピードアップ 0/1 PHPスクリプト バイトコード バイナリ 0/1 PHPスクリプト

    バイトコード 中間コードキャッシュ なし 中間コードキャッシュ あり バイトコードへの変換を アクセス毎に実施 バイトコードへの変換は 初アクセス時のみ実施 バイナリ
  10. P r i m e S t r a t

    e g y C o . , L t d . W o r d P r e s s I n t e g r a t i o n D i v i s i o n 20 5.データベースによるスピードアップ
  11. P r i m e S t r a t

    e g y C o . , L t d . W o r d P r e s s I n t e g r a t i o n D i v i s i o n 25 6.WordPressの実装によるスピードアップ
  12. Transients APIの利用 保存時 取得時 WordPressの実装によるスピードアップ <?php $ranking_data = get_transient( 'ranking'

    ); ?> Transientの取得結果が入る Transientがない、もしくは 期限切れの場合はfalse Transientの名前 保存時と同一にする <?php set_transient( 'ranking', $ranking_data, 3600 ); ?> Transientの名前を指定。 他のTransient名前と重複し ないように注意 Transientに保存するデータ 有効期限(秒数)
  13. Transients APIの利用 保存時 WordPressの実装によるスピードアップ <?php wpp_get_mostpopular(); ?> <?php if (

    false !== ( $ranking_data = get_transient( 'ranking' ) ) ) { ob_start(); wpp_get_mostpopular(); $ranking_data = ob_get_clean(); set_transient( 'ranking', $ranking_data, 3600 ); } echo $ranking_data; ?>
  14. P r i m e S t r a t

    e g y C o . , L t d . W o r d P r e s s I n t e g r a t i o n D i v i s i o n 40 7.ボトルネックの見つけ方
  15. 処理時間の表示 ボトルネックの見つけ方 41 <?php echo __LINE__ . ' | ';

    timer_stop( 1 ); echo "¥n"; ?> コードを書き込んだファイルの行番号 コードを書き込んだ時点での WordPressの処理時間(秒) 改行コードの出力