目前 React Native 的默认缓存行为是什么fetch
打电话?官方 FB 指南只是说“看看 Mozilla!”但我们使用的不是网络浏览器。我假设缓存行为是由于中间件而自定义的。
假设我这样做:fetch("https://exampleserver.com/myfile.json")
调用后请求会自动缓存吗?
-
请求内容是myfile.json
缓存整个“会话”(即:应用程序正在运行 active/bg,但未被用户强制关闭)。
- 请求缓存在哪里?即:是否使用
AsyncStorage
- Would
fetch
URL 再次导致应用程序读取缓存。
- 如果由于某种原因我必须立即请求,缓存有多“快”
myfile.json
多次,它会基本上忽略缓存并进行所有这些单独的调用吗? (我在调试器中看到这种行为)
-
当我强制关闭应用程序并重新打开时,该缓存是否仍然存在?
iOS 中的这种行为与 Android 中有何不同?
世博会对此有影响吗?
至少了解其中一些将有助于决定我是否需要像这样使用 AsyncStorage 编写自定义缓存情况https://gist.github.com/dslounge/18e555250a8df1f8218d702b21910eeb https://gist.github.com/dslounge/18e555250a8df1f8218d702b21910eeb
React Native 的fetch
API 桥接到NSURLSession
在 iOS 和okhttp3
在安卓上。这两个库都严格遵循 HTTP 缓存规范。缓存行为主要取决于Cache-Control
and Expires
HTTP 响应中的标头。每个库都有自己可以调整的配置,例如控制缓存大小或禁用缓存。
缓存的文件不保证在过期之前持续存在。系统可以随时清除它们。
如果您非常快地发出三个请求,那么通常您会成功,因为缓存既不是立即的,也不是有保证的。
一般来说:适当设置 HTTP 响应标头,但不要依赖 HTTP 缓存以某种方式运行以确保应用程序正常运行。如果您想保证第二个请求实际上不会建立网络连接,您需要自己编写。
我认为世博会不会影响这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)