如何清除UWP WebView缓存?

时间:2016-06-09 15:19:15

标签: windows caching webview uwp

我在我的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/"));

我希望静态方法能够清除缓存,当我再次导航到同一页面时,应该清除缓存。我在这里做错了吗?

2 个答案:

答案 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“标头来重新加载文件而不进行强制缓存验证。”
...或者只是在资源管理器中清除缓存