2016-06-09 14 views
4

Ich verwende WebView in meiner UWP-Anwendung und möchte den Cache löschen, während ich die App schließe. Gibt es einen Weg? Ich weiß, dass ich den Cache deaktivieren kann, indem ich Header zu meiner HttpRequestMessage hinzufüge, wie in this Link erwähnt. Ich möchte jedoch den Cache beim Beenden der App löschen können.Wie wird der UWP WebView Cache gelöscht?

Ich habe WebView.ClearTemporaryWebDataAsync() ohne Erfolg versucht. Sobald etwas im Cache gespeichert ist, bleibt es normalerweise in der App. Jede Hilfe wird geschätzt, danke.

Edit: Hinzufügen von Code-Schnipsel

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

Ich erwarte, dass die statische Methode Cache löschen und wenn ich auf derselben Seite wieder seinen Cache navigieren sollten gelöscht werden. Mache ich hier etwas falsch?

+0

Könnten Sie bitte ein Szenario beschreiben? Welche Cache-Daten können Sie nicht aus der universellen App löschen? –

+0

Haben Sie ein Codebeispiel, um zu reproduzieren, dass ClearTemporaryWebDataAsync nicht für Sie funktioniert? – Konstantin

+0

@Konstantin Hinzugefügt ein Code-Snippet –

Antwort

3

In UWP (XAML) gibt es die ClearTemporaryWebDataAsync Methode, die zur Webansicht-Cache und IndexedDB Daten ermöglicht. Und es gibt eine ähnliche Methode für JavaScript in MSApp - clearTemporaryWebDataAsync. Hier

ist Codebeispiel (basierend auf eins), die für mich funktioniert:

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

Wenn ich Refresh-Button klicken, Cache gelöscht wird - Ich sehe grünes Bild.

+0

Ich kann den Cache mit diesem Codebeispiel nicht löschen. Ich habe es an 3 verschiedenen Geräten mit einem Telefon ausprobiert, ich habe nie das grüne Bild gesehen. Manchmal löst die Anwendung auch die Ausnahme "Zugriff verweigert" beim Aufruf von ClearTemporaryWebDataAsync aus oder kehrt überhaupt nicht aus dem Aufruf zurück. –

+0

Ich habe nur ein neues Projekt mit dem obigen Code erstellt. Können Sie den vollständigen Code Ihrer Beispielanwendung veröffentlichen, damit ich sie reproduzieren kann? Ich nehme an, dass es einige zusätzliche Abhängigkeiten geben könnte. – Konstantin

+0

Ich habe auch ein neues Projekt mit demselben Code erstellt, den Sie oben veröffentlicht haben. Es hat immer noch nicht für mich funktioniert. Sie haben keine Fähigkeiten hinzugefügt oder irgendetwas extra richtig? –

Verwandte Themen