1.什么是304跳转
当浏览器发起请求时,如果资源(index.html或者js)没有改变(例如文件没有被修改),服务器就会返回 304 状态码,表示该资源自上次请求以来没有被修改过,客户端可以继续使用本地缓存的副本,而不需要重新下载资源。
2. 如何避免304跳转
2.1 如果是nginx代理
# 禁止浏览器缓存 index.html,确保总是返回 200add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0";add_header Pragma "no-cache";add_header Expires 0;# 让 Nginx 忽略 `If-Modified-Since`,避免返回 304if_modified_since off;etag off;
2.2 如果用的是oss存储前端静态文件
如果用cdn(实现nginx的location)+ oss的方式(存储前端静态文件)
只需要在 oss上做配置:主要是配置index.html的元数据,js和css文件都是随机生成的文件名,每次名字都不一样。所以index.html是不能被缓存的
- Cache-Control配置说明
no-cache:不可直接使用缓存,而是先到服务端验证Object是否已更新。如果Object已更新,表明缓存已过期,需从服务端重新下载Object;如果Object未更新,表明缓存未过期,此时将使用本地缓存。no-store:所有内容都不会被缓存。public:所有内容都将被缓存。private:所有内容只在客户端缓存。max-age=<seconds>:缓存内容的相对过期时间,单位为秒。此选项仅在HTTP 1.1中可用。
# 参考文档
https://www.alibabacloud.com/help/zh/oss/user-guide/manage-object-metadata-10