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