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 文件的更改,完全没有清除/禁用缓存的代码。然后在某个看似随意的点上,文件似乎被缓存了,我无法从缓存中清除它们。
| 归档时间: |
|
| 查看次数: |
5680 次 |
| 最近记录: |