経験知ロゴ

WordPressでnginxのプロキシキャッシュが効かない問題が解決

nginx
新しいブログを立ち上げるために新しいサーバの設定をしています。

その際にnginxのプロキシキャッシュが効かなく(キャッシュファイルが作成されない)悩んでいました。

いろいろ試してみると、ブラウザによってキャッシュが効いたり効かなかったりすることが判明。

更に調べてみるとなんとか解決できたので紹介します。

キャッシュが効かない理由

nginxではresponse headerに「Cache-Control:no-cache」の様な特定の条件の値がある場合はキャッシュを使わず普通に処理してしまう。(HttpProxyModule – Nginx Community)

WordPressファイルの中にある「admin-ajax.php」が「nocache_headers()」を呼び出して「response header」に「Cache-Control:no-cache」を追加していたことが原因のようだ。

特定のブラウザでキャッシュが効かないのは、WordPressにログインした状態でブログにアクセスすると「admin-ajax.php」が呼び出されてキャッシュが効かない状態になっていたからだった。

なのでブラウザに原因があるのではなく、WordPressにログインしているかしていないかの問題だった。

「HttpProxyModule – Nginx Community」によると、プロキシキャッシュの設定に

proxy_ignore_headers X-Accel-Redirect X-Accel-Expires Cache-Control Expires Set-Cookie;

を追加すれば値に関係なくキャッシュしてくれるようだが僕の環境ではうまくいかなかった。

フリーランス向けの高額案件紹介

仕事を請け負っても、単価が安くて売上が伸びず複数案件をこなさなければならない。

ということありませんか?

エンジニアファクトリーは高単価案件を持ち、エンド直請けの仕組みにより高額案件を実現しています。

無料で登録できますので、どのような高額案件があるか確認してみてください。

おわりに

エラーが出ていたわけではないので原因の見当がつかず、かなりの時間を使ってしまいました。

ブラウザの設定でキャッシュが効かなくなるのは困ると思い、必死で探しましたが、WordPressにログインできる自分だけの問題だったのでひとまずホッとしました。

ここまで突き詰めるのに満身創痍のためこれ以上の原因は追求しませんが、お分かりの方がいらしたら教えていただけると有難いです。

▼役に立ったらシェアをお願いします