Heim > Fragen und Antworten > Hauptteil
nginx speichert JS wie folgt eine Stunde lang im Cache
location ~ .*\.(js|css)?$ {
expires 1h;
}
OK, das ist kein Problem. Im schlimmsten Fall kann ich einfach ein Suffix hinzufügen, zum Beispiel: abc.js?v=123
Nachdem ich es online debuggt habe, möchte ich das Suffix entfernen und abc.js?v=123
还原到abc.js
in abc.js
wiederherstellen, aber es ist derzeit noch im Cache. Wie kann ich es beschädigen?
仅有的幸福2017-05-16 17:26:48
grunt-rev
Use the rev task together with yeoman/grunt-usemin for cache busting of static files in your app. This allows them to be cached forever by the browser.
如此nginx的header设置永不过期即可。
仅有的幸福2017-05-16 17:26:48
http://labs.frickle.com/nginx_ngx_cache_purge/README
http {
proxy_cache_path /tmp/cache keys_zone=tmpcache:10m;
server {
location / {
proxy_pass http://127.0.0.1:8000;
proxy_cache tmpcache;
proxy_cache_key $uri$is_args$args;
}
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge tmpcache $1$is_args$args;
}
}
}
访问127.0.0.1/purge/abc.js即可删除缓存的文件。
configure时加上参数--add-module=/path/to/ngx_cache_purge即可加入这个第三方purge模块。
过去多啦不再A梦2017-05-16 17:26:48
类似于expires
max-age
e-tag
这些头部信息是给前端浏览器用的缓存头,比如说你刚才设置的expires 一小时,那么浏览器就会在请求完成后一小时后,每次请求这个文件时都不会再和服务器进行通信,而是每次都是使用本地的缓存文件。在这一个小时内,只有浏览器清除缓存或者在开发者工具中禁用缓存才能在和服务器之间通信,否则在这个一个小时内,服务器上的这个文件做任何改动,都对浏览器没有任何影响。