SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
WordPress関数の
処理コストを考えよう



           松田直樹
自己紹介


                    松田直樹


主な著書(共著)
                              2012年上半期
                              コンピュータ部門
効率的なサイト制作のためのDreamweaverの教科書【CS5.5対応版】


よくわかるDreamweaverの教科書【CS6対応版】 22位


                           WordPress関数の処理コストを考えよう
さて、

WordPress の関数、
  便利ですよね。


           WordPress関数の処理コストを考えよう
特に、テンプレートタグ。

 bloginfo() wp_title() the_tags()
   the_title() wp_nav_menu()
 the_category() the_permalink()
    have_posts() the_content()
the_excerpt()    get_template_part()   the_post()
 get_the_term_list()   get_post_type()
                                        WordPress関数の処理コストを考えよう
できるだけ、
 テンプレートタグ
使いたくなりますよね。


わかります。

            WordPress関数の処理コストを考えよう
ですが、




       WordPress関数の処理コストを考えよう
テンプレートタグも、
もちろん「PHP」のコード


「処理コスト」がかかることを
   忘れないように。

          WordPress関数の処理コストを考えよう
静的ページの場合
リクエスト                      Onload



レイテンシ      ファイル読み込み              レンダリング            表示




   レスポンス                                      完了




動的ページの場合
リクエスト                                     Onload



 PHP処理     レイテンシ      ファイル読み込み                レンダリング           表示




              レスポンス                                         完了




                                                    WordPress関数の処理コストを考えよう
静的ページの場合
リクエスト                      Onload



レイテンシ      ファイル読み込み              レンダリング            表示




   レスポンス                                      完了




動的ページの場合
リクエスト                                     Onload



 PHP処理     レイテンシ      ファイル読み込み                レンダリング           表示




              レスポンス                                         完了




                                                    WordPress関数の処理コストを考えよう
処理コストとは


•   サーバでの処理時間
•   サーバでの処理による負荷
•   閲覧者の待ち時間

               WordPress関数の処理コストを考えよう
要は、

 bloginfo()
   ひとつ実行するたびに
コストは積み重なる、ということ。



             WordPress関数の処理コストを考えよう
よく


テンプレートタグを減らして
  負荷を軽減させる

  と言われますが、本当?



                WordPress関数の処理コストを考えよう
処理コストを
計測・検証してみた



       WordPress関数の処理コストを考えよう
PEAR::Benchmark
PHPの特定の部分の処理時間を計測できるクラス




                  WordPress関数の処理コストを考えよう
<?php
require_once('Benchmark/Timer.php');
$bench = new Benchmark_Timer();
$bench->start();

計測したい処理

$bench->setMarker(‘markername’);
$bench->stop();
$bench->display();
?>
                             WordPress関数の処理コストを考えよう
WordPress関数の処理コストを考えよう
wp_enqueue_script()
 で、script要素を出力してみた




                 WordPress関数の処理コストを考えよう
functions.php に、以下のコードを追加して計測
function scripts_include() {

      $path = get_stylesheet_directory_uri();

      wp_deregister_script( 'jquery' );
      wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js' );

      wp_enqueue_script( 'conf', $path.'/js/conf.js', array('jquery'));
      wp_enqueue_script( 'easing', $path.'/js/jquery.easing.1.3.js', array('jquery'));
      wp_enqueue_script( 'cookie', $path.'/js/jquery.cookie.js', array('jquery'));
      wp_enqueue_script( 'fancybox', $path.'/js/jquery.fancybox.pack.js', array('jquery'));
      wp_enqueue_script( 'transform', $path.'/js/jquery-css-transform.js', array('jquery'));
      wp_enqueue_script( 'hashchange', $path.'/js/jquery.ba-hashchange.js', array('jquery'));
      wp_enqueue_script( 'backgroundPosition', $path.'/js/jquery.backgroundPosition.js', array('jquery'));

      wp_enqueue_script( 'google-maps-api', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL );
      wp_dequeue_script( 'parent-script' );

      wp_enqueue_style( 'module', $path.'/css/module.css' );
      wp_enqueue_style( 'fancybox', $path.'/css/jquery.fancybox-1.3.4.css' );
      wp_dequeue_style( 'parent-style' );

}
add_action( 'wp_enqueue_scripts', 'scripts_include', 10 );



                                                                                              WordPress関数の処理コストを考えよう
functions.php に、以下のコードを追加して計測




                       WordPress関数の処理コストを考えよう
0.000497sec
            速い
気になるほどのコストではないけど。
   * サーバーのスペックや環境によって、数値は異なります




                                 WordPress関数の処理コストを考えよう
bloginfo(‘name’)
 を100回処理してみた




               WordPress関数の処理コストを考えよう
bloginfo(‘name’) を100回処理してみた




                    * 20回計測した平均値




                      WordPress関数の処理コストを考えよう
0.014455sec
 まぁまぁ遅い
  * サーバーのスペックや環境によって、数値は異なります




                                WordPress関数の処理コストを考えよう
じゃ、
同じ文字列が出力がされる

echo “ ブログタイトル ”
   を100回処理してみた




                 WordPress関数の処理コストを考えよう
echo “ ブログタイトル ”   を100回処理してみた




                    * 20回計測した平均値




                           WordPress関数の処理コストを考えよう
0.000139sec
  すげー速い
  * サーバーのスペックや環境によって、数値は異なります




     100倍速い
                                WordPress関数の処理コストを考えよう
そう、
DBを叩いて出力する関数は
   まぁまぁ遅いです


         WordPress関数の処理コストを考えよう
ただし
毎回、DBにアクセスするわけではありません。


            CACHE
               siteurl
             blogname
          blogdescription
                home
              template
             stylesheet
           rewrite_rules



DB内の主要な値は、サーバのメモリ上にキャッシュされる

                            WordPress関数の処理コストを考えよう
まずは「$wp_object_cache」という
  グローバル変数に格納される設計

           CACHE


                                より高速
                   bloginfo()




  bloginfo()で出力できる値のいくつかは、
    そのメモリ上の変数を取得します。

                                 WordPress関数の処理コストを考えよう
なのに
なぜ遅めなのか?


       WordPress関数の処理コストを考えよう
ほとんどのテンプレートタグでは、
いくつかの「フィルター」が「フック」
     されているから。




              WordPress関数の処理コストを考えよう
bloginfo()
   apply_filters('bloginfo', ~);
  add_filter( $filter, 'wptexturize' );
  add_filter( $filter, 'convert_chars' );
  add_filter( $filter, 'esc_html' );



3つのフィルターを処理している
                                    WordPress関数の処理コストを考えよう
general-template.php 488行目
              apply_filters('bloginfo', ~);


default-filters.php 96行目
              add_filter( $filter, 'wptexturize' );
              add_filter( $filter, 'convert_chars' );
              add_filter( $filter, 'esc_html' );

* WordPress 3.4.2 の場合


                                                    WordPress関数の処理コストを考えよう
要するに、


   bloginfo()
     の内々的にも
なんやかんやの処理が行われている



                WordPress関数の処理コストを考えよう
これらの処理コスト、
  割りと軽微なものですが、


テンプレートタグを減らして
  負荷を軽減させる

     は本当です。


              WordPress関数の処理コストを考えよう
決まりきった値
      の出力は、
テンプレートに静的に記述したほうが
  パフォーマンスは 上がる。
         ちょっと




                WordPress関数の処理コストを考えよう
チリつもです。
               静的にすれば、コストはゼロ


by xJason.Rogersx        WordPress関数の処理コストを考えよう
• 会社名
 • サイトブランド名
 • JSファイルのパス
 • CSSファイルのパス
  運用フェーズでは
ほとんど変更しないですよね

                WordPress関数の処理コストを考えよう
<title>
<?php wp_title(' | ', true, 'right'); ?>
<?php bloginfo('name'); ?>
</title>


<title>
<?php wp_title(' | ', true, 'right'); ?>
株式会社まぼろし
</title>

                                       WordPress関数の処理コストを考えよう
<img src="<?php echo
get_template_directory_uri(); ?>/img/
header.jpg">




<img src="http://maboroshi.biz/wp-
content/theme/img/header.jpg">


                                  WordPress関数の処理コストを考えよう
テンプレートの作り方次第では、
    体感できるほどの
   処理コストがかかる。


    と、いうこと。


              WordPress関数の処理コストを考えよう
マルチデバイス対応など、
低スペック・低速回線への最適化も
考慮する昨今。



こういった
ミニマムチューニングが
効いてきますよ。



         WordPress関数の処理コストを考えよう
このような場合、
    処理コストを節約できる

• 配布するテーマではない
• 企業サイト・受注案件など、専用性の
 高いテンプレートである

• テンプレートを変更する頻度が低い
• アクセス過多による負荷を考慮したい
               WordPress関数の処理コストを考えよう
もちろん
     デメリットもあります

• テンプレートの管理性
• テンプレートを流用しにくい
• プラグインとの相性
• 親テーマ ⇔ 子テーマ の連携がしにくい
• Cacheプラグインで解決
                WordPress関数の処理コストを考えよう
ということで、
テンプレートを作るにおいて
処理コストは考えましょう。




             WordPress関数の処理コストを考えよう
ありがとうございました




        WordPress関数の処理コストを考えよう

Weitere ähnliche Inhalte

Was ist angesagt?

Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
hitode909
 
081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.ppt
Naoya Ito
 
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Masahiro Nagano
 
WordPressで提供するWeb API
WordPressで提供するWeb APIWordPressで提供するWeb API
WordPressで提供するWeb API
Yuko Toriyama
 

Was ist angesagt? (20)

.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
これからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようこれからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしよう
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
 
Perlで伝統芸能
Perlで伝統芸能Perlで伝統芸能
Perlで伝統芸能
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
Flask勉強会その1
Flask勉強会その1Flask勉強会その1
Flask勉強会その1
 
Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
 
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくするASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
 
FuelPHPをさわってみて
FuelPHPをさわってみてFuelPHPをさわってみて
FuelPHPをさわってみて
 
081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.ppt
 
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
WordPressで提供するWeb API
WordPressで提供するWeb APIWordPressで提供するWeb API
WordPressで提供するWeb API
 
Development app-with-elixir
Development app-with-elixirDevelopment app-with-elixir
Development app-with-elixir
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
Ci tutorial
Ci tutorialCi tutorial
Ci tutorial
 

Ähnlich wie WordPress関数の処理コストを考えよう

Word press 3.5RC2 - パーフェクト functions.php -
Word press 3.5RC2   - パーフェクト functions.php - Word press 3.5RC2   - パーフェクト functions.php -
Word press 3.5RC2 - パーフェクト functions.php -
BREN
 
ゼロからつくるWord pressテーマ第6回
ゼロからつくるWord pressテーマ第6回ゼロからつくるWord pressテーマ第6回
ゼロからつくるWord pressテーマ第6回
Hitsuji
 
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya
tamotsu toyoda
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
Hidekazu Ishikawa
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
Yusuke Ando
 

Ähnlich wie WordPress関数の処理コストを考えよう (20)

Word press 3.5RC2 - パーフェクト functions.php -
Word press 3.5RC2   - パーフェクト functions.php - Word press 3.5RC2   - パーフェクト functions.php -
Word press 3.5RC2 - パーフェクト functions.php -
 
WordPress実践 導入からカスタマイズまで
WordPress実践 導入からカスタマイズまでWordPress実践 導入からカスタマイズまで
WordPress実践 導入からカスタマイズまで
 
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!
中級者のためのWordPress講座[第2回]WordPressテーマをカスタマイズしてみよう!
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
 
ゼロからつくるWord pressテーマ第6回
ゼロからつくるWord pressテーマ第6回ゼロからつくるWord pressテーマ第6回
ゼロからつくるWord pressテーマ第6回
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
 
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
 
101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya101210 supreme web adobe seminar Nagoya
101210 supreme web adobe seminar Nagoya
 
SaCSS vol.24
SaCSS vol.24SaCSS vol.24
SaCSS vol.24
 
SaCSS vol. 24
SaCSS vol. 24SaCSS vol. 24
SaCSS vol. 24
 
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックWordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
 
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
2012/6/10 Webのパフォーマンスを考える @ 【第三回】初心者向けホームページ勉強会
 
【10人限定】1日でマスター!word pressのための「php:mysql講座」
【10人限定】1日でマスター!word pressのための「php:mysql講座」【10人限定】1日でマスター!word pressのための「php:mysql講座」
【10人限定】1日でマスター!word pressのための「php:mysql講座」
 

Mehr von Naoki Matsuda

マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれマークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
Naoki Matsuda
 
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
Naoki Matsuda
 

Mehr von Naoki Matsuda (8)

DIST.12 「Adobe Creative Station ができるまで」
DIST.12 「Adobe Creative Station ができるまで」DIST.12 「Adobe Creative Station ができるまで」
DIST.12 「Adobe Creative Station ができるまで」
 
HTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティHTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティ
 
SVG MANIAX Ver.2 - Mars vanilla
SVG MANIAX Ver.2 -  Mars vanillaSVG MANIAX Ver.2 -  Mars vanilla
SVG MANIAX Ver.2 - Mars vanilla
 
モックアップやプロトタイプづくりを 加速させる。それが SVG。@DIST.4 「Life is Short」
モックアップやプロトタイプづくりを 加速させる。それが SVG。@DIST.4 「Life is Short」モックアップやプロトタイプづくりを 加速させる。それが SVG。@DIST.4 「Life is Short」
モックアップやプロトタイプづくりを 加速させる。それが SVG。@DIST.4 「Life is Short」
 
SVG MANIAX - CSS Nite After dark7
SVG MANIAX - CSS Nite After dark7SVG MANIAX - CSS Nite After dark7
SVG MANIAX - CSS Nite After dark7
 
CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworks
CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworksCSS Nite in Ginza, Vol.68 # HiDPI時代のFireworks
CSS Nite in Ginza, Vol.68 # HiDPI時代のFireworks
 
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれマークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
 
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
ADC OnAir 第5回 『レスポンシブ Web デザインを学ぼう!実装編』
 

WordPress関数の処理コストを考えよう