nginx 缓存 JS一小时,如下
location ~ .*\.(js|css)?$ { expires 1h; }
OK,这是没有问题的,我要临时刷新缓存,大不了加个后缀即可,例如:abc.js?v=123
abc.js?v=123
那现在我线上调试好了,我想去掉后缀了,将abc.js?v=123还原到abc.js,但是这个时候还被缓存中,请问怎么破?
abc.js
欢迎选择我的课程,让我们一起见证您的进步~~
你上面的规则只是在 header 中加上一条过期规则 告诉浏览器,这个东西1小时候到期 并不是nginx缓存了
这个缓存是指你浏览器(客户端,非nginx)缓存,一般情况下,Ctrl+R强制刷新就会去掉缓存。 或者清除你的浏览器缓存就OK了。
Ctrl+R
不是用一个purge清理模块吗?
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设置永不过期即可。
用东半球最好的前端解决方案-fis,有一套专门的解决方案。fis
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模块。
类似于expires max-age e-tag这些头部信息是给前端浏览器用的缓存头,比如说你刚才设置的expires 一小时,那么浏览器就会在请求完成后一小时后,每次请求这个文件时都不会再和服务器进行通信,而是每次都是使用本地的缓存文件。在这一个小时内,只有浏览器清除缓存或者在开发者工具中禁用缓存才能在和服务器之间通信,否则在这个一个小时内,服务器上的这个文件做任何改动,都对浏览器没有任何影响。
expires
max-age
e-tag
你上面的规则只是在 header 中加上一条过期规则
告诉浏览器,这个东西1小时候到期
并不是nginx缓存了
这个缓存是指你浏览器(客户端,非nginx)缓存,一般情况下,
Ctrl+R
强制刷新就会去掉缓存。或者清除你的浏览器缓存就OK了。
不是用一个purge清理模块吗?
grunt-rev
如此nginx的header设置永不过期即可。
用东半球最好的前端解决方案-fis,有一套专门的解决方案。
fis
http://labs.frickle.com/nginx_ngx_cache_purge/README
访问127.0.0.1/purge/abc.js即可删除缓存的文件。
configure时加上参数--add-module=/path/to/ngx_cache_purge即可加入这个第三方purge模块。
类似于
expires
max-age
e-tag
这些头部信息是给前端浏览器用的缓存头,比如说你刚才设置的expires 一小时,那么浏览器就会在请求完成后一小时后,每次请求这个文件时都不会再和服务器进行通信,而是每次都是使用本地的缓存文件。在这一个小时内,只有浏览器清除缓存或者在开发者工具中禁用缓存才能在和服务器之间通信,否则在这个一个小时内,服务器上的这个文件做任何改动,都对浏览器没有任何影响。