不能这样证明。按照RFC9111第5.2.1.7(2022 HTTP缓存规范)的语义,only-if-cached表示客户端只希望获得已存响应;遵从该指令的缓存,应返回满足请求其他约束的存储响应,或者返回504。这里的504可以是缓存无法满足请求,并不等于已经向源网站发起连接并等到超时。因此,看到这个状态码就断言“源网站超时”,条件不足。

适用边界要先分清。该规范描述的是缓存应如何理解和处理only-if-cached,使用的是SHOULD层面的要求,具体软件、代理、网关和浏览器扩展可能存在实现差异。不能把规范条文直接当成某一款产品的实测结果,也不能反过来宣称所有504都是缓存问题。它只支持一个较窄的判断:在这个请求指令下,504与“缓存未能提供可用已存响应”有关联,但不能单独证明源站状态。
观察时应先保留原始信息。记录请求方法、完整URL、请求头中是否带有only-if-cached及其他缓存指令、发出时间、响应状态和响应头;再看响应由哪一层返回,是本机缓存、局域网代理、单位网关、CDN还是源站链路。若链路位置显示它来自缓存层,且请求确实没有真正连到源站,那么把它解释成“源网站超时”就缺少依据。在获准且目标允许公开访问的条件下,另用不带only-if-cached、不带凭据的普通请求作对照,比反复刷新原请求更有分辨力。
结果可以分几种情况。普通请求正常、只有only-if-cached返回504时,更可能是缓存中没有满足其他约束的已存响应,或该缓存对指令的处理与预期不同;普通请求也失败时,要区分是本机网络、代理链路还是源站问题;两者表现不一致时,不能用一个504直接归因源站。此时应把“缓存无法满足”和“源站超时”并列作为待验证假设,而不是下结论。
风险主要在试错方式。清空全部缓存、关闭安全防护、把带凭据的请求发到第三方检测点,可能破坏其他正常会话或暴露信息,也不利于保留现场。不要用这类动作换取一个看似明确的结论。涉及单位网络或第三方代管设备时,改动代理和缓存设置前应先取得管理方确认。
下一步保存原请求与获准普通请求的对照结果,再联系对应缓存或网络管理方核实。
七星区台式电脑用户可拨400-877-9605,准备原缓存指令和响应由哪一层返回、获准普通请求的对照,未验证源站状态须保留未知。电脑快修网提供信息展示与第三方维修对接,具体地址、电脑侧检查是否支持与安排当次核实,启用范围不代表即时履约。