如何清除 UWP WebView 缓存?

man*_*kar 5 windows caching webview uwp

我在我的 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/"));
Run Code Online (Sandbox Code Playgroud)

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

Kon*_*tin 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>
Run Code Online (Sandbox Code Playgroud)

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

当我点击刷新按钮时,缓存被清除——我看到绿色图像。


Ale*_*mer 0


根据\n关于 WebView 您需要了解的十件事 \xe2\x80\x93 Windows 8.1 的更新,在 8.1 中不可能做到这一点

\n\n

您现在可以使用的最接近的方法是WebView.Refresh,它“通过向服务器发送“Pragma:no-cache”标头来重新加载文件,而无需强制缓存验证。”
\n...或者只是清除资源管理器中的缓存

\n