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)
我希望静态方法清除缓存,当我再次导航到同一页面时,它的缓存应该被清除。我在这里做错了吗?
在 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)
当我点击刷新按钮时,缓存被清除——我看到绿色图像。
根据\n关于 WebView 您需要了解的十件事 \xe2\x80\x93 Windows 8.1 的更新,在 8.1 中不可能做到这一点
您现在可以使用的最接近的方法是WebView.Refresh,它“通过向服务器发送“Pragma:no-cache”标头来重新加载文件,而无需强制缓存验证。”
\n...或者只是清除资源管理器中的缓存
| 归档时间: |
|
| 查看次数: |
9817 次 |
| 最近记录: |