web-dev-qa-db-ja.com

NGINXのindex.htmlページのみにキャッシュを設定しない方法

私の現在のプロジェクトは、次の構成でほぼ機能しています。

root %%COMP_WEB_ROOT;

# COMP Static File serving
location /comp {
    alias %%COMP_WEB_ROOT;
    try_files $uri$args $uri$args/ /index.html;
    add_header 'Cache-Control' 'no-cache, no-store, must-revalidate';
}

# Hide the index file, not exposing that path specifically
location = /index.html {
    internal;
}

これにより、アプリケーション全体のキャッシュを防止できますが、index.htmlページにキャッシュが保存されないようにしたいだけなので、望ましくありません。

そこで、次のように2番目のブロック内にadd_header行を配置しようとしました。

root %%COMP_WEB_ROOT;

# COMP Static File serving
location /comp {
    alias %%COMP_WEB_ROOT;
    try_files $uri$args $uri$args/ /index.html;
    error_page 401 = @error401web;
}

# Hide the index file so that we're not exposing that path specifically
location = /index.html {
    internal;
    add_header 'Cache-Control' 'no-cache, no-store, must-revalidate';
}

NGINXは実行できますが、index.htmlは、add_headerが存在しないかのようにキャッシュを保存しているようです。

私が見逃している他のコマンドはありますか?

5
pike

Index.htmlページがキャッシュを保存しないようにしたいだけです。

  • キャッシュなし:検証せずにリソースを再利用できないようにします
  • no-store:クライアント側にキャッシュを保存できないようにします

あなたの場合、私はこれを試してみます:

location = /index.html {
    internal;
    add_header Cache-Control 'no-store';
}

...次にCTRL + F5を押して、ブラウザのすべてのリソースを強制的に更新します。
この時点から、index.htmlは希望どおりに機能するはずです。

5
Zaczero