通用Windows 10 WebView – 如何清除/禁用caching?

清理UWP应用程序中的WebViewcaching时遇到了很多问题。

如果我编辑从我的HTML页面链接的JS文件的内容,我不能将更改到我的应用程序,除非我重新安装应用程序。

静态WebView.ClearTemporaryWebDataAsync()方法似乎不工作。

我也尝试添加标头的请求来禁用caching:

private void reloadPage() { string url = getUrl(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, new Uri(url)); request.Headers.Add("Cache-Control", "no-cache, no-store, must-revalidate"); request.Headers.Add("Pragma", "no-cache"); myWebView.NavigateWithHttpRequestMessage(request); } 

我也尝试了下面的一个平底船(我不确定这是否影响WebView的caching行为),但仍然没有喜悦:

 private void onWebviewLoaded(object sender, RoutedEventArgs e) { Windows.Web.Http.Filters.HttpBaseProtocolFilter myFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); myFilter.CacheControl.WriteBehavior = Windows.Web.Http.Filters.HttpCacheWriteBehavior.NoCache; myFilter.CacheControl.ReadBehavior = Windows.Web.Http.Filters.HttpCacheReadBehavior.Default; WebView.ClearTemporaryWebDataAsync().AsTask().Wait(); reloadPage(); } 

任何帮助将非常感激!

编辑(14/12/15):我发现添加标头的请求(如上面的第一个代码示例) 确实有效,但只有在应用程序的生命周期已经到位,因为安装。 这是有道理的,因为它只是说不caching这个特定的请求 – 它仍然可以使用旧的caching版本。

这可以作为现在的混乱,但是能够使用caching(例如,在应用程序会话期间),然后清除caching(例如在下次启动时)会更好。

编辑(14/07/16):上述方法似乎没有答案 。 caching行为似乎在webview中不稳定…

在应用程序的干净安装,我可以看到更改CSS / JS文件绝对无代码清除/禁用caching。 然后在一些看似任意的地方,文件似乎被caching了,我无法从caching中清除它们。

Solutions Collecting From Web of "通用Windows 10 WebView – 如何清除/禁用caching?"

这终于为我工作:

 await WebView.ClearTemporaryWebDataAsync(); Windows.Web.Http.Filters.HttpBaseProtocolFilter myFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); var cookieManager = myFilter.CookieManager; HttpCookieCollection myCookieJar = cookieManager.GetCookies(new Uri("http://www.msftncsi.com/ncsi.txt")); foreach (HttpCookie cookie in myCookieJar) { cookieManager.DeleteCookie(cookie); } 

我不知道是否有帮助,但尝试添加一个时间戳在url(url +“?=”+ sometimestampherehere)

刷新webview似乎做了一个重新加载:

 mainWebView.Refresh(); 

这绝对是一个黑客攻击,但是您可能能够在应用程序生命周期的某个时刻插入,以强制重新加载您的内容。 也许在“mainWebView_NavigationCompleted()”事件之后?

我有一个类似的问题,在UWP应用程序中的CSS没有得到清除。 我运行了ProcessMon,发现UWP应用程序在Windows 10中缓存了.css和.js文件:C:\ Users \\ AppData \ Local \ Packages \ microsoft.windows.authhost.sso.p_8wekyb3d8bbwe \ AC \ INetCache \ Q8IHZDMV。 我正在使用Web身份验证代理,所以情况可能稍有不同。 如果与此类似的位置不能平移,则可能需要在启动UWP应用程序时尝试运行processmon(SysInternals套件的一部分),以查看是否可以识别UWP应用程序正在使用的路径缓存这些资产。 一旦那里,删除这些资产,并重新启动应用程序的伎俩。