当前位置: 首页 > 知识库问答 >
问题:

通过React Native对NSURLSession使用must-revalidate

阴礼骞
2023-03-14

在一个示例演示应用程序中,我使用React Native进行网络调用。实际上,React Native使用nSurlSessionnSurlRequestUseProtocolCachePolicy作为默认缓存策略。当进行网络调用时,服务返回的响应包含以下缓存控件标头:

public, max-age=10, must-revalidate

基于14.9.4缓存重新验证和重新加载控制部分,这不应该是预期的行为,但也许我错了。

因为高速缓存可以被配置为忽略服务器的指定过期时间,并且因为客户端请求可以包括max-stale指令(具有类似的效果),所以该协议还包括一种机制,用于原始服务器在任何后续使用时要求重新验证高速缓存条目。当缓存接收的响应中存在必须重新验证指令时,该缓存不得在该条目变得陈旧后使用该条目来响应后续请求,而不首先用原始服务器重新验证该条目。(也就是说,如果仅基于源服务器的过期或最大年龄值,缓存的响应是陈旧的,那么每次缓存都必须进行端到端的重新验证。)

我发现了一个关于这个主题的有用讨论:HTTP缓存控制最大年龄,必须重新验证。基于讨论,协议似乎有点

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

有线索吗?

共有1个答案

黄成荫
2023-03-14

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

附言。如果HTTP协议的专家对这个问题有线索,请让我知道。

 类似资料:
  • 问题内容: 在集成到更大的应用程序之前,我正在尝试测试一个概念验证的命令行应用程序。我想要做的是使用此示例使用NSURLSession下载一些数据。但是,如果使用简单的OS X命令行应用程序中给出的示例,则该应用程序将在检索数据之前退出。 如何使用NSURLSession从独立的命令行应用程序下载数据?我所读的内容是使用NSRunLoop,但是我还没有在Swift中找到明确的示例,因此,如果NSR

  • 新建一个React Native工程,参考React Native 官网 react-native init hello cd hello yarn add baidumobstat-react-native react-native link 进入新建的目录,打开ios目录下的hello.xcodeproj工程,在iOS工程的Linked Frameworks and Libr

  • 本文向大家介绍ReactNative Image组件使用详解,包括了ReactNative Image组件使用详解的使用技巧和注意事项,需要的朋友参考一下 最近学习ReactNative感觉到挺有意思的,在学习的过程中,发现网上一些人写的文章内容过时了,这主要是ReactNative的版本升级太快,如果你现在看一篇16甚至15年写的文章,把知识点和官方文档对比下,会让你大跌眼镜。所以奉劝各位想学习

  • 使用 react native 和 socket.io 开发的模仿微信聊天的 app,后台使用 node 和 moogodb,目前还在开发中。 已完成的功能 登录 注册 通讯录 两人文字聊天 下拉获取聊天历史记录 未读消息提示 正在开发的功能 朋友圈 多人聊天 用户管理 系统设置 语音聊天 发送图片 效果展示     

  • 问题内容: 如何在Swift中将证书固定到NSURLSession? 该OWASP网站只包含Objective- C和NSURLConnection的一个例子。 问题答案: Swift 3+ 更新: 只需定义一个委托类并实现didReceiveChallenge函数( 此代码改编自Objective-c OWASP示例 ): (您可以在此处找到Swift 2 的Gist- 从初始答案开始) 然后使

  • 问题内容: 我有一个NSURLSession调用dataTaskWithRequest以这种方式发送POST请求 响应等于: 我的问题是我不知道如何获取名称为MYCOOKIEIS的“ Set-Cookie”中的cookie。 我将在用户登录时使用它,因此,如果用户未登录->登录(调用登录api),否则请转到主屏幕并调用其他API。 有人可以帮助我从那里拿走饼干吗? 问题答案: Swift呈现形式可