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にログインできる自分だけの問題だったのでひとまずホッとしました。

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


タグ:

スポンサーリンク



この記事が役に立ったらシェアして頂けると嬉しいです!
このブログをフォロー・RSS購読もお願いします!

スポンサーリンク