Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
WordPressを使いこなそう
                      Vol.1



                          2012.08.24 - wokamoto

2012年8月23日木曜日
自己紹介
     WordPress Plugins/JSeries プロジェクト
     の一員で、主に WordPress のプラグイン
     をつくっています。
                Head Cleaner - <head> 部分のお掃除をするプ
                ラグイン

                OAuth Provider - WordPress を OAuth プロ
                バイダにするプラグイン

                http://profiles.wordpress.org/wokamoto
2012年8月23日木曜日
WordPress のパフォーマンス
                チューニング済 AMI "網元" を
                公開したりしました。

                  http://ja.megumi-cloud.com/




2012年8月23日木曜日
最近、こんなん書きました
                WordPress 高速化&スマート運用
                      必携ガイド




2012年8月23日木曜日
概要
           WordPress を使ったウェブサイトの
           パフォーマンス改善について

                ボトルネックの特定方法

                プラグインを導入した改善手法

                サーバサイドの改善方法



2012年8月23日木曜日
ボトルネックを探る




2012年8月23日木曜日
遅くなる原因


                PHP の処理が遅い

                MySQL の処理が遅い

                回線速度の問題



2012年8月23日木曜日
PHP の処理が遅い


                プラグインやテーマが非効率

                無駄に WordPress が動作している

                アクセスが多くて、処理が追いついてない




2012年8月23日木曜日
MySQL の処理が遅い

                プラグインの詰め込みすぎでクエリーが多い

                クエリーが適切にチューニングされていない

                MySQL サーバが適切にチューニングされてい
                ない




2012年8月23日木曜日
回線速度の問題


                画像ファイルなど大きいファイルが多い

                CSS, JS の読み込みが多い

                外部から読み込んでいる JS が遅い




2012年8月23日木曜日
Debug Bar と
                Debug Bar Extendar



2012年8月23日木曜日
http://wordpress.org/extend/plugins/debug-bar/

                http://wordpress.org/extend/plugins/debug-bar-
                extender/




2012年8月23日木曜日
インストールしたら wp-config.php
       に以下を追加

           define('SAVEQUERIES', true);
           define('WP_DEBUG', true);
           define('WP_DEBUG_DISPLAY', false);




2012年8月23日木曜日
Debug Bar でボトルネックに
                なっている処理を特定する




2012年8月23日木曜日
Debug Bar の Profiler タブに
                表示するチェックポイントを追加

     <?php
     if ( function_exists("dbgx_checkpoint") )
          dbgx_checkpoint( $note="注釈" );
     ?>




2012年8月23日木曜日
WordPress を
                極力動かさない



2012年8月23日木曜日
存在しないファイルへのアクセス
           で WordPress が実行してしまう
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>

      # END WordPress
2012年8月23日木曜日
ブラウザ・クローラが
                 存在確認するファイル

                /favicon.ico
                /apple-touch-icon.png
                /robots.txt
                /crossdomain.xml


2012年8月23日木曜日
# BEGIN WordPress
       <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteBase /
       RewriteCond %{REQUEST_FILENAME}
       ! !.(html?|xml|txt|xsl|js|css|jpe?g|png|gif|ico)$
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteRule . /index.php [L]
       </IfModule>

       # END WordPress


2012年8月23日木曜日
JavaScript の
                重複に気をつける



2012年8月23日木曜日
<?php wp_enqueue_script('jquery'); ?>




2012年8月23日木曜日
jQuery だけ Google AJAX
                 Libraries のモノを使う
      <?php
      wp_deregister_script('jquery');
      wp_enqueue_script(
        'jquery',
        'http:/ /ajax.googleapis.com/ajax/libs/
      jquery/1.7.2/jquery.min.js',
        array(),
        '1.7.2');
      ?>
2012年8月23日木曜日
静的ファイルに
                有効期限を設ける



2012年8月23日木曜日
<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 1 seconds"
 ExpiresByType text/html "access plus 1 seconds"
 ExpiresByType image/gif "access plus 30 days"
 ExpiresByType image/jpeg "access plus 30 days"
 ExpiresByType image/png "access plus 30 days"
 ExpiresByType image/x-icon "access plus 30 days"
 ExpiresByType text/css "access plus 7 days"
 ExpiresByType text/javascript "access plus 7 days"
 ExpiresByType application/x-javascript "access plus 7 days"
 </IfModule>


2012年8月23日木曜日
Expires 設定した時の
                         注意点

 wp_enqueue_style(
   'my-theme-style',
   get_template_directory_uri() . '/style.css',
   array(),
   date('YmdHis',
      filemtime(get_template_directory() . '/style.css') )
   );



2012年8月23日木曜日
テキストファイルを
                gzip 圧縮転送する



2012年8月23日木曜日
<IfModule mod_deflate.c>
 SetOutputFilter DEFLATE
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4.0[678] no-gzip
 BrowserMatch bMSIE/[1-6] !no-gzip !gzip-only-text/html
 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|ico|pdf)$
 no-gzip dont-vary
 SetEnvIfNoCase Request_URI _.utxt$ no-gzip
 DeflateCompressionLevel 4
 AddOutputFilterByType DEFLATE text/plain
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE application/x-javascript
 AddOutputFilterByType DEFLATE application/x-httpd-php
 </IfModule>
2012年8月23日木曜日
.htaccess を
                極力使わない



2012年8月23日木曜日
/ に対して AllowOverride が有効になっている場合
 /wp-includes/js/jquery/jquery.js にアクセスがあった
 際は Apache は以下のファイルをすべて調べる

                /.htaccess

                /wp-includes/.htaccess

                /wp-includes/js/.htaccess

                /wp-includes/js/jquery/.htaccess




2012年8月23日木曜日
画像ファイルを
                最適化する



2012年8月23日木曜日
http://wordpress.org/extend/plugins/wp-smushit/




2012年8月23日木曜日
配信先を複数に
                  分ける



2012年8月23日木曜日
http://wordpress.org/extend/plugins/wp-flickr-press/




2012年8月23日木曜日
http://wordpress.org/extend/plugins/tantan-s3/




2012年8月23日木曜日
CDN を使って
                コンテンツを配信する



2012年8月23日木曜日
http://wordpress.org/extend/plugins/wpbooster-cdn-
                client/




2012年8月23日木曜日
CSS, JS を
                最適化する



2012年8月23日木曜日
http://wordpress.org/extend/plugins/head-cleaner/




2012年8月23日木曜日
適用前




2012年8月23日木曜日
適用後




2012年8月23日木曜日
WordPress の出力を
                 キャッシュする



2012年8月23日木曜日
Object Cache




2012年8月23日木曜日
よくある WordPress 高速化の手法


   <?php bloginfo('stylesheet_url') ?>

   テンプレートタグをテーマ中に書くと MySQL サーバに
   アクセスして遅くなるので URL を直接書こう。


   http://example.jp/wp-content/themes/example/style.css

   残念ながら、この手法にはあまり効果がありません。



2012年8月23日木曜日
wp_cache_add( $key, $data, $group )

                wp_cache_replace( $key, $data, $group )

                wp_cache_set( $key, $data, $group )

                wp_cache_get( $key, $group )

                wp_cache_delete( $key, $group )

                wp_cache_flush()




2012年8月23日木曜日
オブジェクトキャッシュされたデータは


                   通常、毎回破棄される




2012年8月23日木曜日
オブジェクトキャッシュされたデータ
           を永続的に使用するためのプラグイン



        http://wordpress.org/extend/plugins/wp-file-cache/

        http://wordpress.org/extend/plugins/apc/

        http://wordpress.org/extend/plugins/memcached/




2012年8月23日木曜日
DB のクエリー実行結果
                 をキャッシュする



2012年8月23日木曜日
http://wordpress.org/extend/plugins/db-cache-
                reloaded-fix/




2012年8月23日木曜日
WordPress の出力を
                丸ごとキャッシュする



2012年8月23日木曜日
http://wordpress.org/extend/plugins/wp-super-cache/




2012年8月23日木曜日
http://wordpress.org/extend/plugins/nginx-champuru/




2012年8月23日木曜日
MySQL の
                チューニング



2012年8月23日木曜日
$ wget mysqltuner.pl
       $ chmod +x mysqltuner.pl
       $ ./mysqltuner.pl




2012年8月23日木曜日
Twitter : @wokamoto
2012年8月23日木曜日

More Related Content

WordPress を使いこなそう