2016-06-09 237 views
4

我在我的UWP應用程序中使用WebView,我想在關閉應用程序時清除緩存,有沒有辦法?我知道我可以通過在我的HttpRequestMessage中添加頭文件來禁用緩存,如this鏈接中所述。但是,我希望能夠在應用程序退出時清除緩存。如何清除UWP WebView緩存?

我沒有嘗試過嘗試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

你能否描述一個場景?哪些緩存數據無法從通用應用中清除? –

+0

你有代碼示例重現ClearTemporaryWebDataAsync不適合你嗎? – Konstantin

+0

@Konstantin添加了代碼片段 –

回答

3

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

當我點擊刷新按鈕,清除緩存 - 我看到綠色的形象。

+0

我無法使用您的代碼示例清除緩存。我在3臺不同的機器上試過,包括一部手機,我從未看過綠色的圖像。此外,有時該應用會在ClearTemporaryWebDataAsync調用上拋出「拒絕訪問」異常,或根本不會從該調用返回。 –

+0

我用上面的代碼創建了一個新項目。你可以發佈你的示例應用程序的完整代碼,以便我可以重現它嗎?我想可能會有一些額外的依賴關係。 – Konstantin

+0

我創建了一個新項目,並使用上面發佈的相同代碼。它仍然不適合我。你沒有添加任何功能或任何額外的權利? –