利用伪B站做测试的时候遇到304的一点小问题

13 篇文章 0 订阅
5 篇文章 0 订阅
本文探讨了在cdn测试中遇到的304状态问题,特别是当伪B站更改content-type时,nws服务器如何处理。通过研究rfc文档,发现响应包含实体头的情况取决于缓存验证器的类型。MUST NOT和SHOULD NOT在HTTP协议中的含义也被解释,强调了遵循协议的重要性。
摘要由CSDN通过智能技术生成

用户先请求nws服务器,如果本地可以命中,nws直接返回文件给用户; 如果本地没有命中,nws回源向伪B站请求文件,就是简单的cdn的思路。

Created with Raphaël 2.1.0 用户 nws服务器 伪B站

作为一个做cdn的,用户永远之上。 用户要求怎么做,我们就怎么来。 基于这样的想法,我在测试nws是否可以正确的吐出伪B站给数据, 就算伪B站给nws的数据是错误的,不符合常规,nws也不能随便修改,也要原封不动的吐给用户。

测试遇到的问题

Cache-control: max-age=600, 针对伪B站304给nws过程中, 如果伪B站修改content-type值,nws不会做出处理,继续给客户端回复之前nws保存的content-type。 我当时就认为这不对啊,不按照用户的意思来了,违背客户意愿。

这个就是伪B站http头部信息
用户接受的http头部信息

当时用rfc文档看了,也没有查到304是什么标准啊,这样做行不行。

304 rfc文档

304大家都知道是文件内容没有修改就直接返回304了,但是如果我修改http会怎样没有查到,然后经过询问业务的同学,一般业务源站不会着做,而且304也不建议这么做,给我了另外一个文档。https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 然后找到了真相。
If the conditional GET used a strong cache validator (see section 13.3.3), the response SHOULD NOT include other entity-headers. Otherwise (i.e., the conditional GET used a weak validator), the response MUST NOT include other entity-headers; this prevents inconsistencies between cached entity-bodies and updated headers
翻译就是:如果条件GET使用了强大的缓存验证器,则响应不应该包括其他实体头。否则(即。,条件GET使用弱验证器),响应必须不包括其他实体头;这可以防止缓存实体和更新的标题之间的不一致
多BB两句http文档中的意思, MUST NOT 协议里面出现这个字样的, 表示强制要求。 违反该协议可能无法正常运行。 SHUOLD NOT 这个表示强烈要求这样做。 但是违反了协议, 通常不应判定为严重错误而导致基本功能失败。
证明我的测试用例这种情况是不存在的,还是需要详细看看http头部每个字段的具体含义用法,遇到问题多和业务沟通,事半功倍。
这次就总结到这里,如果有什么问题,欢迎沟通哈
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值