WordPress個別ページが開けない対策その2:解決編

LINEで送る
Pocket

がじです。こっそりテーマを「StartupWP」に戻して様子を見ていました。

WordPressの個別ページが開けない問題
WP Super Cacheプラグイン 一時停止します→しません
WordPress個別ページが開けない対策その1
ですが、どうやら原因らしきものが判ったので、報告させていただきます。

テーマは無実でした。(だから「StartupWP」ベースに戻した)

結局何が問題だったかというと、apacheのキャッシュとWP Super Cacheで保存されたキャッシュが不一致を起こしていたのではないかという結論に達しました。

こちらのページによるとapacheのキャッシュは取り扱いが面倒でNginxやSquidを使う人が多いとか・・・
Nginxなんてここ1、2ヶ月前まで存在すら知らなかったので検討もしてませんでしたよ、ええ。←素人丸出し。

というわけで修正!

まずは/etc/httpd/conf/httpd.confを再編集します。

<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
# キャッシュデータの保存先
CacheRoot /var/cache/apache/
# キャッシュ対象URI
CacheEnable disk /wordpress
# キャッシュディレクトリの深さ
CacheDirLevels 5
# キャッシュディレクトリの文字数
CacheDirLength 3

# キャッシュのデフォルト有効期限(3600秒=60分)
CacheDefaultExpire 3600

# キャッシュの最大有効期限(7200秒=120分)
CacheMaxExpire 7200

</IfModule>
</IfModule>

これでキャッシュの有効時間が設定されました。しかしこのままでは無効になったキャッシュが残り続けるため無効キャッシュをクリーンする処理が必要です

上に引用したページからのリンク
http://server-setting.info/centos/htcacheclean-setting.html
では、地道にコマンドからスクリプトを作ってデーモン化していますが、私の場合WordPressしか使ってないし、アクセス数も更新頻度も少ないページなので別の解法を取ることにします。(つーか慣れてる方法?)

cronを使って1時間ごとにキャッシュをクリーンすることにします。
# crontab -e
を実行してcronの設定をします。

00 00 * * * htcacheclean -v -D -p /var/cache/apache -l 100k

整合性を取るためにWP Super Cacheのキャッシュ有効時間も設定しておきましょう。管理ダッシュボードから設定→WP Super Cacheを開き、詳細を選択します。真ん中あたりに「有効時間とガーベージコレクション」の項目があります。

131020_01

キャッシュタイムアウトをapacheと同じ3600秒に、時間指定をcronの時間に合わせて設定します。(少しずらしたほうがいいかも)

この状態で丸2日問題なく動いていることを確認しました。
—以下広告—

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)

新品価格
¥3,129から
(2013/10/19 18:29時点)

LINEで送る
Pocket