Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Json/XML文件加载菜单的方法,具有良好的内存利用率_C#_Asp.net_Json - Fatal编程技术网

C# 从Json/XML文件加载菜单的方法,具有良好的内存利用率

C# 从Json/XML文件加载菜单的方法,具有良好的内存利用率,c#,asp.net,json,C#,Asp.net,Json,我的asp.net MVC应用程序有一个菜单文件“navigationMenu.json”。下面是我如何读取json文件的 public static class NavigationMenu { public static List<NavigationMenuViewModel> Get() { string jsonMenu = File.ReadAllText(HostingEnvironment.MapPath("/navigat

我的asp.net MVC应用程序有一个菜单文件“navigationMenu.json”。下面是我如何读取json文件的

public static class NavigationMenu
{
 public static List<NavigationMenuViewModel> Get()
        {
            string jsonMenu  = File.ReadAllText(HostingEnvironment.MapPath("/navigationmenu.json"));

            var menu = JsonConvert.DeserializeObject<List<NavigationMenuViewModel>>(jsonMenu);
            return menu;
        } 
}
公共静态类导航菜单
{
公共静态列表Get()
{
字符串jsonMenu=File.ReadAllText(HostingEnvironment.MapPath(“/navigationmenu.json”);
var menu=JsonConvert.DeserializeObject(jsonMenu);
返回菜单;
} 
}
因此,现在当页面加载此方法时,
NavigationMenu.Get()
每次调用,并在视图中用于显示菜单


我担心的是,如果这是正确的方式。我是否应该使用静态列表对象来存储菜单并使用列表,而不是每次都从文件中读取?此外,菜单文件中的任何更改也需要立即显示。

这取决于各种情况。如果这个文件每小时有4个人访问,那么在工程上就没有意义了。从文件中读取是可以接受的

如果您可以确保对来自应用程序的文件的单点访问(没有其他进程会触及它,如记事本),那么您可以轻松缓存内容,并在从所述单点访问时使其失效/刷新

如果存在大量流量并且无法确保受控访问,您还可以拥有一个缓存,该缓存将在几秒钟内过期。我假设用户可以使用陈旧的数据生活3秒钟。此外,如果应用程序仅在初始加载时请求导航,许多用户将错过更新,直到他们刷新整个页面