我的应用使用fetch(uri,{cache:'默认'})来查询服务器并将响应标头记录到控制台。当我的应用程序在第二次及以后的时间内使用相同的URI获取时,我希望看到状态304,但它继续以200响应,即使响应具有最大年龄为86400的缓存控制头(1天)。
我注意到服务器正在使用Cloudfare,并且cf-cache-status设置为" HIT"这意味着它是从CDN提供的,但我不希望停止提取API来缓存。
如果我想避免多次重新获取相同的数据,是否需要实现自己的自定义缓存解决方案?
答案 0 :(得分:1)
依靠返回的api statusCodes
并不是一件好事。
由于fetch将statusCodes 101
,204
,205
或304
视为null
身体状态here
有许多参数和steps涉及将statusCode设置为304
,需要对cache-fetch
响应进行全面检查。
但要注意的主要是
Fetch将在前往网络的途中检查HTTP缓存。如果有新的响应,它将被使用。如果存在过时响应,则将创建条件请求,否则将创建正常请求。然后它使用响应更新HTTP缓存。
因此,您可以检查以下标记If-Modified-Since
,If-None-Match
,If-Unmodified-Since
,If-Match
或If-Range
,如果已设置则会自动检查将cache mode
设置为nostore