上下文
目前正在使用HTML& JS重型项目,是一个反应原生项目。所有HTML& JS在本地引用(没有通过http)。
问题
每当我对HTML或JS进行更改时,我都没有看到更改(刷新本机代码或只是再次运行),因此我不得不完全卸载应用程序。
问题
有没有办法忽略这些文件的缓存版本(我假设存在缓存机制)
我没有找到关于此主题的任何有效资源,因此非常感谢任何反馈,谢谢。
答案 0 :(得分:2)
我假设您使用React Native' WebView组件来呈现您的HTML和JavaScript。此组件依赖于本机UIWebView和WebView组件,因此您可以使用与这些组件相同的过程来修改RN WebView。例如,在iOS情况下,您可以执行以下操作:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
您可以将该代码放入didFinishLaunchingWithOptions
AppDelegate.m
方法中。基于this answer。
在Android情况下,除非您可以访问WebView的实例(根据this answer),否则无法访问缓存,因此您可以使用RN的代码创建自己的WebView WebView结合了缓存删除功能。它没有看起来那么复杂。
答案 1 :(得分:0)
对于android,"应用信息"设置,在存储下将允许您清除缓存。这是您可以强制重新加载WebView中显示的任何资源的方法。
答案 2 :(得分:0)
对我来说,我使用了https://github.com/joeferraro/react-native-cookies,它确实为我清除了cookie。在使用WebView
CookieManager
.clearAll(true)
.then((res) => {
console.log('LoginScreen CookieManager.clearAll =>', res)
})
答案 3 :(得分:0)
查看WebView.android.js文件(node_modules / react-native-webview / lib / WebView.android.js),WebView.defaultProps中有一个名为 cacheEnabled 的属性,它是设置为true。
您可以尝试在WebView JSX中将 cacheEnabled 属性设置为false:
<WebView
cacheEnabled={false}
source={{ uri: env.APP_URL }} style={{flex:1}} />