Javascript Android Webview从过期缓存加载资源

Javascript Android Webview从过期缓存加载资源,javascript,android,caching,webview,Javascript,Android,Caching,Webview,我正在创建一个混合应用程序,其中UI位于服务器上,我在应用程序中使用webview,仅在必要时使用本机功能(需要硬件访问的地方) 我的问题是,有时候Webview从缓存加载资源,甚至当更新的资源(如javascript等)上载到服务器上时也是如此。当我同时从计算机上的浏览器打开相同的URL时,我不会遇到这个问题。如何确保webview从服务器更新其内容。这种行为也是不可预测的,因为webview最终会在多次页面加载之后更新其缓存 每次运行时清除缓存或加载\u NO\u缓存模式都不是一个选项,因为

我正在创建一个混合应用程序,其中UI位于服务器上,我在应用程序中使用webview,仅在必要时使用本机功能(需要硬件访问的地方)

我的问题是,有时候Webview从缓存加载资源,甚至当更新的资源(如javascript等)上载到服务器上时也是如此。当我同时从计算机上的浏览器打开相同的URL时,我不会遇到这个问题。如何确保webview从服务器更新其内容。这种行为也是不可预测的,因为webview最终会在多次页面加载之后更新其缓存

每次运行时清除缓存或加载\u NO\u缓存模式都不是一个选项,因为我需要缓存功能(但当服务器上有更新的资源可用时,不会有从缓存加载旧资源的风险)

下面是代码片段。loadURL();正在应用程序中的其他位置调用

    browser = (WebView) findViewById(R.id.browser);
    progress_bar = (ProgressBar) findViewById(R.id.progressBar1);


    browser.getSettings().setSavePassword(false);
    browser.getSettings().setJavaScriptEnabled(true);

    browser.setWebChromeClient( .... )
    browser.setWebViewClient( .... )  // omitted complete functions to save space

我在web应用程序上做的一件事是在脚本和链接标记中的JavaScript和CSS文件中添加一个假的版本标志。所以,在web端看起来是这样的。这会使浏览器认为资源不同,并导致浏览器重新加载资源

<link href="./css/my_style.css?version=1.0" rel="stylesheet" type="text/css" />
<script src="./js/my_script.js?version=1.3" type="text/javascript"></script>
String expireDateString = getSharedPreferences("WebviewExpireCache", Context.MODE_PRIVATE);
Date today = new Date();
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
if(today.after(format.parse(expireDateString ))){
    browser.clearCache(true);
}