如何清除UWP WebView缓存?

5
我正在使用UWP应用程序中的WebView,并希望在关闭应用程序时清除缓存,是否有方法?我知道可以通过向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/"));

我希望调用静态方法可以清除缓存,当我再次访问同一页时,缓存应该被清除。这里我有什么做得不对的吗?


请描述一个场景,哪些缓存数据无法从通用应用程序中清除? - Sunteen Wu
你有一个代码示例可以重现ClearTemporaryWebDataAsync无法工作的问题吗? - Konstantin
@Konstantin 添加了一个代码片段。 - manjunath shetkar
我更新了我的回答 - 你的代码实际上对我有效。如果你想在“绿色图像”后刷新 - 根据网站设计,你应该点击页面内的链接来重置它。 - Konstantin
2个回答

7
在 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
我无法使用你提供的代码示例清除缓存。我在包括手机在内的三台不同的机器上尝试了它,但从未看到绿色图像。此外,有时应用程序在调用ClearTemporaryWebDataAsync时会抛出“访问被拒绝”异常,或者根本没有从调用中返回。 - manjunath shetkar
我刚刚用上面的代码创建了一个新项目。你能否发布示例应用程序的完整代码,以便我可以重现它?我想可能会有一些额外的依赖项。 - Konstantin
我也使用了你上面发布的相同代码创建了一个新项目。对我来说,它仍然无法工作。你没有添加任何功能或其他额外的东西,对吗? - manjunath shetkar
谢谢。添加这行代码对我有用。Windows.UI.Xaml.Controls.WebView.ClearTemporaryWebDataAsync(); - Arjang

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接