304跳转如何避免

1.什么是304跳转

当浏览器发起请求时,如果资源没有改变(例如文件没有被修改),服务器(OSS)就会返回 304 状态码给cdn,cdn再响应给用户。表示该资源自上次请求以来没有被修改过,客户端可以继续使用本地缓存的副本,而不需要重新下载资源。

2. 如何避免304跳转

2.1 如果是nginx代理

    # 禁止浏览器缓存 index.html,确保总是返回 200
    add_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`,避免返回 304
    if_modified_since off;
    etag off;

2.2 如果用的是oss存储前端静态文件

如果用cdn(实现nginx的location)+ oss的方式(存储前端静态文件)
只需要在 oss上做配置:主要是配置index.html的元数据,js和css文件都是随机生成的文件名,每次名字都不一样。所以index.html是不能被缓存的
image

  • 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

修改前:页面多刷新几次就会304

修改后:页面无论怎么刷新都是200

posted @ 2025-03-17 16:52  Hello_worlds  阅读(325)  评论(0)    收藏  举报