• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

android - 通过 React Native 使用 must-revalidate 和 NSURLSession

[复制链接]
菜鸟教程小白 发表于 2022-12-11 16:37:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在一个示例演示应用程序中,我使用 React Native 进行网络调用。 React Native 使用 NSURLSessionNSURLRequestUseProtocolCachePolicy 作为默认缓存策略。当进行网络调用时,服务返回的响应包含这些缓存控制 header :

public, max-age=10, must-revalidate

我能注意到的是,如果 max-revalidate 存在,NSURLSession 不会遵守 10 秒。相反,如果在 10 秒内进行新的网络调用时后者不存在,则返回缓存响应,否则进行新的调用。

基于 14.9.4 Cache Revalidation and Reload Controls部分这不应该是预期的行为,但也许我错了。

Because a cache MAY be configured to ignore a server's specified expiration time, and because a client request MAY include a max- stale directive (which has a similar effect), the protocol also includes a mechanism for the origin server to require revalidation of a cache entry on any subsequent use. When the must-revalidate directive is present in a response received by a cache, that cache MUST NOT use the entry after it becomes stale to respond to a subsequent request without first revalidating it with the origin server. (I.e., the cache MUST do an end-to-end revalidation every time, if, based solely on the origin server's Expires or max-age value, the cached response is stale.)

我发现了一个关于这个主题的有用讨论:HTTP Cache Control max-age, must-revalidate .根据讨论,协议(protocol)似乎有点

ambiguous here, but in practice I have found that must-revalidate means it must revalidate regardless of max-age.

一个非常奇怪的事情是,如果我对 Android 做同样的事情,同时使用 max-agemust-revalidate 行为是正确的。 10 秒后将发出一个新请求。在 10 秒内没有发出任何请求。

有什么线索吗?



Best Answer-推荐答案


我做了一些测试,似乎在 iOS(使用 NSURLSession)中,只要设置了 must-revalidate,就不会考虑 max-age。对于可以同时使用这两个值的 Android,情况就不同了。

附:如果 HTTP 协议(protocol)方面的专家对此主题有任何线索,请告诉我。

关于android - 通过 React Native 使用 must-revalidate 和 NSURLSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37543129/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap