固定サーバーとしてnginxを実行しています。サーバー側のフォルダtemplate.xlsx
ファイルを更新するとき。ダウンロードするとまだ古いファイルが返されるため、template.xlsx
静的ファイルを新しいファイルに置き換えたことが確実です。 nginxが新しいnginxファイルを返すようにするには?これは静的nginx設定です。
server{
listen 443 ssl;
ssl_certificate /etc/nginx/conf.d/cert/example.com/fullchain1.pem;
ssl_certificate_key /etc/nginx/conf.d/cert/example.com/privkey1.pem;
server_name static.example.com;
location / {
root /usr/share/nginx/html/static;
client_max_body_size 50m;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
index index.html index.htm;
}
}
Dockerコンテナを再起動してみましたが、まだ新しいテンプレートが返されないようです。
答え1
デフォルトでは、nginxはoff
以下を使用します。期限切れ指示する。これは、nginxが「Expires」および「Cache-Control」応答ヘッダーフィールドを追加または変更しないことを意味します。静的ファイルの場合、これはクライアント(ブラウザ)が2つのヘッダーなしでリソースをキャッシュする方法を自由に選択できることを意味します(これはユーザーに定義されていない動作です)。HTTP仕様これは、要求を更新しない限り(ブラウザのF5 / Ctrl + F5またはIf-Modified-Since
クライアントの要求ヘッダー)設定によっては、現在のセッションへの応答などの成功した応答を保存したり、一定期間保存することができるためです。 )。頭)。If-None-Match
Cache-Control
Pragma
ブラウザ/クライアントはキャッシュされたファイルを使用できるため、nginx(またはdockerコンテナ)を再起動してもまったく役に立ちません。ブラウザでDevTools(F12) - >ネットワークを使用して、ダウンロードが開始されたときに正確に何が起こるのか(そしてブラウザがリクエストと共に送信し、nginxから応答を受け取るヘッダが何であるか)を監視できます。
あなたはできます:
- そのファイル(場所)のキャッシュを無効にするか、ヘッダーを使用または追加します
expires -1;
(Cache-Control: no-cache
少なくともほとんど変更されていないリソース(画像、スタイル、JSなど)を除いて、すべての静的アイテムに対してキャッシュを完全に無効にすることはお勧めできません。ではありません)。 - または、ブラウザ/クライアントが別のURIにリロードすることを強制します。たとえば、次のようなデルタサフィックス(または単純なタイムスタンプ)を
template.xlsx?ver=2
使用して要求を送信します。?ver=...
- または、F5 / Ctrl + F5を使用してブラウザ/クライアントを強制的に再ロードします(一部のHTTPクライアントのブラウザまたはヘッダーの場合)
Cache-Control: no-cache
。Pragma: no-cache