質問編集履歴

1 修正依頼とコメントへの回答

smnsmn

smnsmn score 173

2019/03/07 18:11  投稿

【Nginx】キャッシュが消えない。リロードすると更新前に戻る。
# 環境
・Xサーバー
・Nginx
・.htaccess
# 解決したいこと
ページを編集した後、Chromeでページを確認しても更新されません。
検証モードにし、「キャッシュの消去とハード再読み込み」をすると更新されるのですが、
リロードすると更新前の状態に戻ってしまいます。
これはNginx側にキャッシュが残っているため、ブラウザキャッシュを消しても戻ってしまうのでしょうか?
検証モードでキャッシュ削除すると一度は最新の状態になるのはなぜでしょうか?
解決できず困っております。
# 試したこと
```
// .htaccessの設定(修正前)
Header set Cache-Control "max-age=2628000, public"
```
としており、Response headerでも`cache-control:max-age=2628000, public`となっていたので、
```
//.htaccessの設定(修正後)
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
```
上記に変更してみました。
が、検証モードでキャッシュを消した時は
Response headerが`cache-control:max-age=0, no-cache, no-store, must-revalidate`になりましたが
リロードするとやはり更新前のページが表示され、
Response headerは`cache-control: max-age=2592000`になっています。
どこかで設定が上書きされているのでしょうか・・・?
Xサーバー側のブラウザキャッシュやサーバーキャッシュはOFFになっています。
確認するべき箇所や解決策が他にありましたら、ご教授いただけますと幸いです。
よろしくお願い致します。
よろしくお願い致します。
# ご質問について
> 検証モードとは?(シークレットモード??)
Chromeのデベロッパーツールを表示した状態です。
右クリック→「検証」の状態です。
その状態で、ブラウザ左上の更新マークを右クリック「キャッシュの消去とハード再読み込み」をしています。
> htaccessはapacheの設定ファイルのはずですが、nginxでhtaccessを有効にするツールでも使用しているのでしょうか?
> nginxでは.htaccessは使えないです。そこが原因ではないでしょうか。
Nginxが通常nginx.conf等を使用することは承知しております。
[Xサーバーの説明](https://www.xserver.ne.jp/manual/man_server_nginx.php)にもあるのですが、.htaccessをそのまま使用することができます。
```
*nginx環境下での.htaccessのご利用について
エックスサーバーではnginx環境下(サーバー番号がsv2001以降のすべて、sv1999以前の一部サーバー)においても、Apache環境下で設定された「.htaccess」ファイルをそのままご利用いただくことが可能です。
詳細はマニュアル「nginxについて」をご参照ください。
```
> https://teratail.com/questions/59732
は試しましたか?
こちらも試してみます。ありがとうございます。
  • nginx

    1850 questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る