通用 Windows 10 WebView - 如何清除/禁用缓存?

Jas*_*iss 5 c# windows caching webview uwp

我在清除 UWP 应用程序中的 WebView 缓存时遇到了很多麻烦。

如果我编辑从我的 HTML 页面链接的 JS 文件的内容,除非我重新安装应用程序,否则我无法将更改添加到我的应用程序中。

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

我还尝试向请求添加标头以禁用缓存:

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);
}
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下操作(我不确定这是否会影响 WebView 的缓存行为),但仍然没有乐趣:

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();
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

编辑(2015 年 12 月 14 日): 我发现向请求添加标头(如上面的第一个代码示例中所示)确实有效,但前提是自安装以来在应用程序的整个生命周期内都存在。这是有道理的,因为它只是说不要缓存这个特定的请求——它仍然可以使用旧的缓存版本。

这暂时是一个障碍,但是能够使用缓存(例如在应用程序会话期间)然后清除缓存(例如在下次启动时)会更好。

编辑(2016 年 7 月 14 日):上述方法似乎站不住脚。webview中的缓存行为似乎不稳定......

在应用程序的全新安装中,我可以看到对 CSS/JS 文件的更改,完全没有清除/禁用缓存的代码。然后在某个看似随意的点上,文件似乎被缓存了,我无法从缓存中清除它们。

小智 1

我不知道它是否有帮助,但尝试在网址后面添加时间戳(网址+“?=”+有时tamphere)