WordPress でチューニング + α (予約投稿)
前提
WordPress が運営しているサイト(システム?)が重くなってきたので Apache2 から nginx へ乗り換えを検討。
ちなみに元環境は以下。
参考にしたサイト
- nginxベースの高速なWordPress環境をお名前.comのVPSで構築 | OSDN Magazine
- http://yu-gure.blogspot.jp/2013/05/centosnginxperl-cgi.html
- 一部CGIで動かしてるプログラムがあったのでついでに。
ab でベンチマーク比較して nginx >>>>>(超えられない壁)>> Apache2 な結果になったのでめでたしめでたし。
...で終わらなかった orz
問題(?)発生
WordPressの機能で投稿日時を指定して投稿できる「予約投稿」的な機能がある。
参考にさせていただいたサイトにもあるように、アクセスがあるとキーに一致するキャッシュがあればそのデータを使用してページを表示する。
指定した投稿日時を迎えていざページを見てみると...トップページに表示されていない。
時間をおくと表示されるので、投稿前の状態のデータがキャッシュされているのが原因だと気づいた。
# WordPressにログイン中だったり、運良くキャッシュの有効期間が切れていたりすると、投稿した記事が見えていると思う。
対応
予約投稿の日時を迎えたら強制的にキャッシュをクリアすれば最新の状態が表示されると思い、その線で色々調べた。
WordPress の予約投稿は時間が来ると wp-cron.php が何かしらをトリガーにして呼び出されるらしい。
# 諸々調べたログが消えた...涙
ので [WordPressをインストールしたディレクトリ]/wp-cron.php の良しなな部分にキャッシュを消すスクリプトを追加する。
※これを参考にしてファイルを修正する場合は自己責任でお願いします!
WordPressが動かない!等の苦情は対応出来ません。
※自己責任でも試してみようかなと言う人はバックアップを取得しておくことをオススメします。
// Clear cache
system( "/bin/rm -rf /var/cache/nginx/cache1/*" );
うまくいったー。めでたい。