経験知ロゴ

日々の経験を知識として発信するブログ

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購読できるリンク