nginx 快取 JS一小時,如下
location ~ .*\.(js|css)?$ {
expires 1h;
}
OK,這是沒有問題的,我要暫時刷新緩存,大不了加個後綴即可,例如:abc.js?v=123
那現在我線上調試好了,我想去掉後綴了,將abc.js?v=123
還原到abc.js
,但這個時候還被緩存中,請問怎麼破?
仅有的幸福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 $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 一小時,那麼瀏覽器就會在請求完成後一小時後,每次請求這個檔案時都不會再和伺服器進行通信,而是每次都是使用本地的快取檔案。在這一小時內,只有瀏覽器清除快取或在開發者工具中禁用快取才能在和伺服器之間通信,否則在這個一個小時內,伺服器上的這個檔案做任何改動,都對瀏覽器沒有任何影響。