suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Nginx speichert JS eine Stunde lang im Cache.

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?

天蓬老师天蓬老师2749 Tage vor847

Antworte allen(8)Ich werde antworten

  • 習慣沉默

    習慣沉默2017-05-16 17:26:48

    你上面的规则只是在 header 中加上一条过期规则
    告诉浏览器,这个东西1小时候到期
    并不是nginx缓存了

    Antwort
    0
  • 黄舟

    黄舟2017-05-16 17:26:48

    这个缓存是指你浏览器(客户端,非nginx)缓存,一般情况下,Ctrl+R强制刷新就会去掉缓存。
    或者清除你的浏览器缓存就OK了。

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 17:26:48

    1. 保留后缀
    2. 修改文件名

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-05-16 17:26:48

    不是用一个purge清理模块吗?

    Antwort
    0
  • 仅有的幸福

    仅有的幸福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设置永不过期即可。

    Antwort
    0
  • 怪我咯

    怪我咯2017-05-16 17:26:48

    用东半球最好的前端解决方案-fis,有一套专门的解决方案。
    fis

    Antwort
    0
  • 仅有的幸福

    仅有的幸福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模块。

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 17:26:48

    类似于expires max-age e-tag这些头部信息是给前端浏览器用的缓存头,比如说你刚才设置的expires 一小时,那么浏览器就会在请求完成后一小时后,每次请求这个文件时都不会再和服务器进行通信,而是每次都是使用本地的缓存文件。在这一个小时内,只有浏览器清除缓存或者在开发者工具中禁用缓存才能在和服务器之间通信,否则在这个一个小时内,服务器上的这个文件做任何改动,都对浏览器没有任何影响。

    Antwort
    0
  • StornierenAntwort