vue部署到nignx上如何自动更新浏览器缓存
时间: 2024-10-22 13:16:04 浏览: 34
Vue应用部署到Nginx时,为了实现页面刷新后自动更新浏览器缓存,你需要配置Nginx的静态文件缓存策略和ETag头信息。以下是基本的步骤:
1. **清除默认缓存设置**:
- 在Nginx的server block里(通常是`location /`),移除或注释掉默认的缓存过期时间,例如 `add_header Cache-Control "no-cache, no-store, must-revalidate";` 和 `expires 0;`。
2. **启用强缓存**:
- 添加 `add_header Cache-Control "public, max-age=31536000";` 来设置资源有一个较长的公共缓存周期,例如一年。这会告诉浏览器在一年内如果没有更新的情况下直接从缓存加载内容。
3. **使用ETag头**:
- 添加 `add_header ETag '"$filemtime"';`,这会在响应头部添加文件修改时间作为ETag值,浏览器可以根据这个值判断文件是否已经改变。
4. **Vary header**:
- 如果应用的内容可能因用户的某些属性(如登录状态)而变化,应加上 `add_header Vary "Accept-Language, Accept-Encoding, Cookie";`,以防止单用户缓存所有用户的资源。
5. **URL哈希(URL Rewrites)**:
- 可以考虑使用预发布版本的URL(如`/v2`),并在新版本发布时更改URL,而不是直接更新服务器文件。Nginx可以设置一个规则,如`if_modified_since`,当浏览器请求已经被缓存的内容时,如果文件未更改,则返回304 Not Modified,避免下载新内容。
```nginx
location / {
try_files $uri $uri/ =404;
add_header Cache-Control "public, max-age=31536000";
add_header ETag '"$filemtime"';
add_header Vary "Accept-Language, Accept-Encoding, Cookie";
if_modified_since off;
}
```
阅读全文