ログインユーザーに返っている HTML が非ログインユーザー用のものということでしたら、ブラウザキャッシュではないと思いますがどうでしょうか?
また、コメントなどキャッシュしてはいけないものがキャッシュされてしまうということを防いだりといろいろやってくれるプラグインがあるので、こちらも参照してください。
https://ja.wordpress.org/plugins/nginx-champuru/
僕の環境の設定ファイルは以下のようになっていました。
ファイル全体は
https://github.com/megumiteam/chef-amimoto
などにあると思います。
server {
listen 80;
server_name example.cc;
(中略)
set $do_not_cache 0;
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
set $do_not_cache 1;
}
if ($request_method = POST) {
set $do_not_cache 1;
}
(中略)
location @wordpress {
internal;
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_redirect off;
proxy_cache czone;
proxy_cache_key "$scheme://$host$request_uri$mobile";
proxy_cache_valid 200 0m;
proxy_pass http://backend;
}
(中略)
}
トピック投稿者
吉田 丈治
(@geeorgey)
Shinichi Nishikawaさん
ありがとうございます。
既にNginx Cache Controllerは使っています。
確かに、ブラウザキャッシュではないですね。
ログインしているのに、ログインしていない状態のキャッシュ(proxy cache)が返ってくる感じです。
(プロキシキャッシュ削除すると、管理バーが現れます)
confファイルありがとうございます。試してみたいと思います。
(元々W3 Total Cacheを使っていたのですが、この件があってWP Super Cacheに切り替えてみたところ、大丈夫になった気がするので現在は様子を見ています)
Nginx Proxy キャッシュと WP Super Cache などのうち、ページの生成結果をキャッシュする機能とは、機能がかぶっており、併用はしない方がよいと思います。
proxyのキャッシュがってことは$do_not_cacheがセットされていないか、或いはproxy_cache_bypassになっていないか?
あ、あくまでもAmimoto系の設定を参考に話してるので自身の設定ファイルと西川さんのと見比べてみてください:)
トピック投稿者
吉田 丈治
(@geeorgey)
Shinichi Nishikawaさん
そうだったんですね。併用辞めました(WP Super Cache停止)
Nginx環境ですと、特にキャッシュ系プラグインは使う必要無いでしょうか?
Hinaloeさん
同じくAmimoto系でしたので参考にさせていただきます。
質問しておいて何なのですが…今やってみると何故か問題がなさそうです。
以前サーバが劇的に重かった時期があり、その時に感じた課題だったもので、WPではない部分で何かが起きていたのかもしれません。お騒がせ致しました。
Nginx環境ですと、特にキャッシュ系プラグインは使う必要無いでしょうか?
というよりも、Nginx プロキシキャッシングサーバがやっていることというのは、
- 一度アクセスがあると、そのページのキャッシュを作成する(HTMLを丸ごと保存しておく感じ)
- 2回目以降のアクセスに対しては、そのページのキャッシュを返す(保存しておいたHTMLをブラウザに戻す。その際、WordPressは動きません)
ということなのです。なので、WP Super Cacheのメインの機能と同じです。
次に、ページをまるまるキャッシュするときに発生する問題が、
- コメント欄にメールアドレスなどを入れた状態がキャッシュされることがある(他のユーザーに前のユーザーの個人情報が漏れる)
- 予約投稿が動かないかもしれない(全ページがキャッシュされていたら困る)
- ブログ記事を追加しても、更新されない(その記事もトップページも)
- ちゃんと設定しないとログインユーザーにもキャッシュが表示される
という事が起こります。
Nginx Cache Controller プラグインが扱うのは上記にリストにしたうちのいつ、どのキャッシュをクリアするのか問題です。キャッシュをパージするルールや、手動でのパージなどですね。
一方、コメントやログインユーザー向けのキャッシュ返答の有無は、以下の部分です。
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
set $do_not_cache 1;
}