api 接口中应用 refresh header

这篇博客探讨了服务器处理文件下载的流程,包括文件存在性检查、OSS备份和磁盘存储策略。当文件不存在或者部分存在时,服务器通过HTTP响应头的refresh引导客户端重试。客户端下载可能通过前台或后台方式进行,而服务端处理方式保持一致。异常情况包括文件只存在于OSS和文件完全不存在,服务器分别给出不同的响应策略。
摘要由CSDN通过智能技术生成
  • 一段文件下载伪代码(服务器端)

if (文件存在)
	return 文件流;
else
{   
	1、通过消息队列通知OSS下载组件下载这个本地不存在的文件(这个操作是异步的);
	2、响应头加入 refresh , 3秒后重新加载;
	return this.Ok(); 返回 http status = 200
}

文件上传服务器后,会自动备份到OSS进行统一保存,本地磁盘也会保存一段时间,但很有可能一段时间后删除。

文件上传后备份到OSS,对于客户端是透明的,文件上传到服务器磁盘后,客户端的上传请求就得到了响应,也就是结束了。

但是客户端请求下载就会出现很多的意外的情况

  1. 文件压根不存在,不管在服务器磁盘还是OSS
  2. 文件不存在磁盘,但是存在于OSS

客户端请求下载文件也会有两种方式

  1. 前台下载,浏览器自动响应处理,比如在浏览器打开PDF,查看图片
  2. 后台下载,Ajax方式下载,由js 代码响应处理

不管客户端采用的是前台下载,还是后台下载,对于后台服务端都是一样的

模拟下载文件的测试

异常情况1 .文件存在于OSS上,但是不存在于磁盘上,响应信息如下

  • 第一次请求响应信息
    浏览器接收到的响应中包含 refresh 会自动3秒后发送第二次请求

  • 第二次请求
    在这里插入图片描述

Content-Type、Content-Length 等都出现了

异常情况2 .文件根本不存在,响应信息如下

  • 第一次请求

    浏览器接收到的响应中包含 refresh 会自动3秒后发送第二次请求

  • 第二次请求
    在这里插入图片描述

这个是一个 404 返回,浏览器停止继续发送请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值