html cdn不缓存,【前端开发日常 - 6】七牛CDN上的网页缓存问题及HTML禁止缓存(续)...

本文介绍了如何处理七牛CDN上的网页缓存问题,通过新建bucket来区分需要缓存的静态资源和不需要缓存的入口HTML。主要步骤包括:创建新bucket存放不缓存的HTML,设置meta标签防止HTML缓存,调整CDN缓存配置,以及通过版本号管理确保用户访问最新页面。同时,还提出了处理用户收藏地址和跨域localstorage共享的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求背景

紧接着之前的内容【前端开发日常 - 5】七牛CDN上的网页缓存问题及HTML禁止缓存。

由于七牛CDN无法通过设置对单独的文件修改,而只能通过对 bucket 的统一设置修改 max-age 响应头,我准备单独新建一个 bucket ,将不需要的缓存的页面发布在这个 bucket 中,从而达到整个前端打包页面发布新版、接收更新的目的。

解决方案

1、首先新建一个 bucket 专门存放入口页面(由于有的浏览器真的会把HTML文件缓存很久,哪怕加了时间戳访问);

2、设置meta标签去除HTML缓存;

3、将静态资源发布到原有的 bucket,保证请求图片、js、css等文件都可以使用缓存;

4、由于跨域不能共享 localstorage,鉴权页面放在原有 bucket,保持与网页入口在同一个域名下。

具体访问流程如下:

【访问新 bucket 的 index.html(禁止缓存)】  - 【将参数传递到鉴权页面 path/{版本号}/auth.html (在原有bucket)】 - 【完成鉴权,设置localstorage】 - 【跳转至页面入口 path/{版本号}/index.html(在原有bucket)】

核心代码

去除新bucket的max-age

登录七牛进入管理控制台,进入【对象储存】 - 【空间管理】 找到新的 bucket , 点击【设置】,找到【文件客户端缓存 maxAge】,将里面的值改小(因为不能设置为 0)。

修改CDN响应头的缓存设置

首先在七牛【CDN】 - 【域名管理】找到新bucket的域名,点击配置,再找到 【缓存配置】 - 【修改配置】,在里面配置不需要缓存的文件(.html)。修改之后,在此新bucket上传的html文件将不会再节点上缓存。

去除HTML缓存

我们可以采取通过meta标签去除缓存:

其中,Cache-Control 对 HTTP 1.1 使用,Pragma 对 HTTP 1.0 使用,Expires 对 proxies 使用。

上传文件到七牛CDN

将入口(index.html)上传到新的 bucket,鉴权页面(auth.html)和项目编译的页面(index.html + 其它资源文件)通过发布到原有的bucket。通过上面的处理,我们的入口HTML文件将不会被缓存,并且以后每次上传改HTML入口文件,也不需要刷新预取。

发布完成之后,我们通过访问新bucket的入口,经过跳转auth.html鉴权,再跳转到真实的项目入口,由于真实项目每次发布新版都加了版本号前缀,我们可以访问到最新的页面。

解决用户收藏地址的问题

1、Webpack打包配置 publicPath 。

由于我们使用的是create-react-app,我们只需要在项目根目录增加一个.env.production文件,增加配置:

PUBLIC_URL="静态资源存储地址"

2、将auth.html与 打包出来的 index.html 文件发布到新的bucket,这样我们就只保留了静态资源在原有bucket,而在HTML中引入了这些资源。这样我们将使用新的bucket的域名来做localstorage共享,并且用户收藏的是新的域名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值