以前、WordPressの負荷が上がっており、様々なチューニングをしました。
まず、サーバのチューニングでOPcacheを有効化。続いて、W3 Total Cacheをインストールします。ページがキャッシュされて高速になります。
また、wp-cron.phpを手動で更新するように設定。wp-config.phpの一番上に
define (‘DISABLE_WP_CRON’, ‘true’);
を記述します。次に、定期的な実行を行うためにcrontabでwp-cron.phpを実行するようにします。このwp-cron.phpはサイトにアクセスがあるたびに実行されるため、それなりにアクセスがあるサイトの場合は負荷が高くなります。
- OPcacheでPHPファイルの高速化
- W3 Total Cacheのプラグインでページやオブジェクトなどのキャッシュ化
- wp-cron.phpを定期的に実行
これで安定した運用ができていました。
先日、サーバの引っ越しをして、すべて移行したのですが、どうもW3 Total Cacheのキャッシュが更新されません。1~2時間待っても更新されず、W3 Total Cacheのプラグインを無効にして有効にする、「empty all caches」をクリックするなどでキャッシュを手動でクリアすると、ページのキャッシュが更新されます。ただし、毎回手動で行うのは大変です。
前回の設定と何が違うのか。考えたところ、wp-cron.phpのcron設定を行っていないことです。wp-cron.phpのcron設定を新サーバでも設定したところ、キャッシュが更新されるようになりました。
wp-cron.phpは、指定した公開日時に投稿するなどの機能だけだと思っていたのですが、W3 Total Cacheのページ更新にも必要のようです。