通过nginx替换指纹文件服务器时,浏览器中的资产缓存过期

时间:2016-01-22 11:28:22

标签: nginx assets

我通过nginx提供单页JavaScript应用程序,当我部署新版本时,我想强制浏览器使其JS缓存无效并请求/使用最新版本。

例如,当我使用名为my-app-8e8faf9.js的文件替换名为my-app-eaea342.js的服务器文件夹上的文件时,我不希望浏览器提取{{1从他们的缓存中再次出现。但是当没有新版本可用时,我仍然希望他们从缓存中读取资产。

如何使用nginx配置实现此目的?这是我现有的配置:

my-app-8e8faf9.js

1 个答案:

答案 0 :(得分:4)

通过更改资产网址来使缓存无效是一种常规做法。

但要实现这一点,你需要永久缓存你的html文件,以便浏览器在这些名称发生变化时会有一些信息。

html和资产的独立位置。匹配器可能会有所不同,具体取决于您存储它们的方式,例如:

location / {
  try_files $uri $uri/ =404;
  gzip_static on;
  }

location ^~ /assets/ {
  gzip_static on;
  expires max;
  add_header Cache-Control public;
  }