React Native在fetch
调用中进行缓存的默认行为是什么?官方FB指南只是说“看看Mozilla!”但我们不在网络浏览器上。我认为由于中间件的缘故,这里的缓存行为是自定义的。
让我说:fetch("https://exampleserver.com/myfile.json")
请求被调用后是否自动缓存了请求?
myfile.json
的请求内容是否缓存了整个“会话”(即:应用程序正在运行中/活动,但未被用户强制关闭)。
AsyncStorage
fetch
网址会再次导致应用读取缓存。myfile.json
,那么缓存有多“快”,那它是否将基本上忽略缓存并进行所有这些单独的调用? (我在调试器中看到了此行为)当我强制关闭应用程序并重新打开时,此缓存是否仍然存在?
iOS中的这种行为是否与Android不同?
世博会对此有影响吗?
至少知道其中一些内容有助于决定我是否需要像https://gist.github.com/dslounge/18e555250a8df1f8218d702b21910eeb这样用AsyncStorage编写自定义缓存情况
答案 0 :(得分:2)
React Native的- (IBAction)buttonTap:(UIButton *)sender {
if (self.theView) {
[self.stackView removeArrangedSubview:self.theView];
[self.theView removeFromSuperview];
self.theView = nil;
} else {
self.theView = [[[NSBundle mainBundle] loadNibNamed:@"SomeView" owner:nil options:nil] firstObject];
self.theView.translatesAutoresizingMaskIntoConstraints = NO;
[self.stackView addSubview:self.theView];
[self.stackView insertArrangedSubview:self.theView atIndex:0];
self.theView.viewHeightConstraint.constant = 95;
}
}
API桥接到iOS上的fetch
和Android上的NSURLSession
。这两个库都严格遵循HTTP缓存规范。缓存行为将主要取决于HTTP响应中的okhttp3
和Cache-Control
标头。这些库中的每一个都有自己可以调整的配置,例如,控制缓存大小或禁用缓存。
不能保证高速缓存的文件在它们到期之前一直存在。系统可以随时清除它们。
如果您真的非常快地发出三个请求,那么总的来说,您将成功,因为缓存既不立即也不保证。
通常:适当设置HTTP响应标头,但不要依赖HTTP缓存以某种方式使应用正常运行。如果您想保证第二个请求实际上不会建立网络连接,则需要自己编写。
我认为世博会对此没有影响。