C# 检查页面是否存在于缓存中,Windows 8应用程序

C# 检查页面是否存在于缓存中,Windows 8应用程序,c#,caching,windows-8,frame,C#,Caching,Windows 8,Frame,有没有办法检查Windows 8应用程序中的页/帧是否存在于缓存中?假设我有两个页面:主页和客户端(启用了导航缓存)。当我从主页(通过按钮)导航到客户机时,客户机将从OnNavigatedTo方法中的数据库中加载。我通过“后退”按钮返回主页,然后再次导航到客户。现在我看到客户机是从缓存加载的,这很好,但再次从OnNavigatedTo方法加载。我只想在第一次打开页面时从数据库加载客户端一次。稍后,只需从缓存加载客户端 如何检查客户端以前是否已加载或仅在第一页加载时加载?也许还有别的方法 谢谢大家

有没有办法检查Windows 8应用程序中的页/帧是否存在于缓存中?假设我有两个页面:主页和客户端(启用了导航缓存)。当我从主页(通过按钮)导航到客户机时,客户机将从OnNavigatedTo方法中的数据库中加载。我通过“后退”按钮返回主页,然后再次导航到客户。现在我看到客户机是从缓存加载的,这很好,但再次从OnNavigatedTo方法加载。我只想在第一次打开页面时从数据库加载客户端一次。稍后,只需从缓存加载客户端

如何检查客户端以前是否已加载或仅在第一页加载时加载?也许还有别的方法


谢谢大家!

这里有一个解决方案

Sinche没有人想从metro应用程序中的缓存加载,所以最好为相应帧重置缓存大小。对于希望从缓存加载的页面。只要保持一个if循环。并在
历史记录
对象中检查
转发堆栈

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
    base.OnNavigatingFrom(e);
    if (e.NavigationMode == NavigationMode.Back)
    {
        ResetPageCache();
    }
}

private void ResetPageCache()
{
    var cacheSize = ((Frame) Parent).CacheSize;
    ((Frame) Parent).CacheSize = 0;
    ((Frame) Parent).CacheSize = cacheSize;
}
这里有一个博客。我建议你先看一下:)

编辑---------------------

这里有两个链接。因为我从未遇到过从以前的缓存加载文件的情况,所以我可以分享一些发现:)

下面是
accesscache

这是给winJS的


如果将所需页面的缓存设置为true,则访问缓存可能满足您的要求:)

好的,我解决了我的问题。重要的是启用NavigationCacheMode。在OnNavigatedTo方法中,我只检查从数据库保存数据的列表是否包含任何元素。在打开第一页时,它是空的,所以我将数据从数据库加载到列表中。因此,启用NavigationCacheMode时,变量中的数据存储在缓存中,并在导航到此页面时加载。可能需要一些标志。

假设您谈论的是网页。我从开发基于PHP的网站中了解到,您可以指定是否可以缓存页面,如果可以,则指定页面何时过期。因此,一般来说,您会询问要设置哪些页眉?也许你会对此感兴趣:顺便说一句,Windows8与任何事情有什么关系?您将其标记为C#,因此.Net框架更合适,但标题中没有这一点。您现在的问题表明您正在尝试一种特定于平台(Windows 8)的访问缓存页面的功能/技巧。。。(至少对我来说…)编辑:哦,我现在明白了,我在想
ASP C
。我不了解Windows 8应用:)哦,对不起,不,我不是在说网页。我的问题是关于Windows 8应用程序。我想建议使用内核标签,这是什么样的问题?+1我确实遇到过这样的问题:)我将分享一个解决方案。我肯定想从缓存加载我的页面。我将更正我的问题。在这种情况下,只需启用
NavigationCacheMode=NavigationCacheMode.Enabled。如果页面在缓存中,它将自动从缓存中加载。但这将在应用程序中发生。我将在编辑中分享一些更具体的内容:)是的,它确实有效,但每次我打开此页面时,OnNavigatedTo方法都会调用。我想在打开第一页时从数据库加载客户端,然后从缓存中获取它们。这就是为什么我想知道客户端是在缓存中,还是在第一次打开页面时。我猜你是在winJS上?还是地铁C#