我在我的UWP应用程序中使用WebView,我想在关闭应用程序时清除缓存,有没有办法?我知道我可以通过在this链接中提到的HttpRequestMessage中添加标头来禁用缓存。但是,我希望能够在应用程序退出时清除缓存。
我确实尝试过WebView.ClearTemporaryWebDataAsync()但没有成功。 一旦缓存了某些内容,它通常会保留在整个应用中。 感谢任何帮助。谢谢。
修改:添加代码段
var webView = new WebView();
webView.Navigate(new Uri("http://refreshyourcache.com/en/cache-test/"));
await WebView.ClearTemporaryWebDataAsync(); //static method
webView.Navigate(new Uri("http://refreshyourcache.com/en/cache-test/"));
我希望静态方法能够清除缓存,当我再次导航到同一页面时,应该清除缓存。我在这里做错了吗?
答案 0 :(得分:4)
在UWP(XAML)中有ClearTemporaryWebDataAsync
方法,它允许webview的缓存和IndexedDB数据。在MSApp中有类似的JavaScript方法 - clearTemporaryWebDataAsync
。
以下是适合我的代码示例(基于您的代码示例):
XAML:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<WebView x:Name="webView" Width="800" Height="600"></WebView>
<Button x:Name="refreshBtn" Content="Refresh" ></Button>
</StackPanel>
</Grid>
C#:
public MainPage()
{
this.InitializeComponent();
refreshBtn.Tapped += RefreshBtn_Tapped;
webView.Navigate(new Uri("http://refreshyourcache.com/en/cache-test/"));
}
private async void RefreshBtn_Tapped(object sender, TappedRoutedEventArgs e)
{
await Windows.UI.Xaml.Controls.WebView.ClearTemporaryWebDataAsync();
webView.Navigate(new Uri("http://refreshyourcache.com/en/cache-test/"));
}
当我点击刷新按钮时,缓存被清除 - 我看到绿色图像。
答案 1 :(得分:0)
在8.1中没有可能做到这一点 Ten Things You Need to Know About WebView – An Update for Windows 8.1
现在可以使用的最接近的方法是WebView.Refresh“通过向服务器发送”Pragma:no-cache“标头来重新加载文件而不进行强制缓存验证。”
...或者只是在资源管理器中清除缓存