私は私のnginx.conf
に次のコードを使用して、静的なリソースをキャッシュしています:nginxののETagを無効
http {
...
gzip on;
gzip_types *;
gzip_vary on;
...
server {
...
location /static {
alias /opt/static_root;
expires max;
}
}
}
これは、次のHTTPヘッダーを設定するのに十分である:でもLast-Modified
かかわらず、しかし
$ curl -I example.com/static/css/bootstrap.min.css
Content-Length: 97874
Last-Modified: Mon, 21 Nov 2016 18:30:33 GMT
ETag: "58333d49-17e52"
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
を日付はブラウザのキャッシュされたバージョンより遅いですが、Firefoxのバージョン50.0とChrome 54.0.2840.98でテストされた古いバージョンのファイルが引き続き表示されています。
どのようにして私は静的ファイルにdiffを配布するときに、ブラウザがそれらをリロードすることを理解できるようにETagを無効にできますか?
私はnginx -s reload
を試しましたが、無駄です。
アセットを再ダウンロードするかどうかを判断するためのリクエストごとにsha1ハッシュを送信し、ハッシュが変更されたときだけダウンロードするメカニズムは現在ありません。 – user14717
@NickThompson:もちろん、リソースをすぐに期限切れにするように設定することでこれを行うことができます。その場合、ブラウザは条件付き要求に対して適切なヘッダーを送信し、サーバーはETagを使用してリソースが変更されているかどうかを判断します。 (FYI、それはそうですね(http://serverfault.com/a/690374)nginxはハッシュを使ってETagsを決定しません)。 –