我可以在HTTPGET上将数据保存在内存中吗?

时间:2018-09-13 19:35:41

标签: c# angular asp.net-web-api

我正在通过网格页面change上的api调用从服务器调用数据。调用此方法时,我会动态获取所有列的表架构,并在有角度的一侧进行其他工作。

问题是我只需要获取一次此表数据。

我该如何将数据保存在内存中,这样,如果用户在客户端上更改页面,就不必为了获得模式数据而再次访问数据库?

 [Route("api/MyRoute/GetData/{Skip}/{Take}")]
        [HttpGet]
        [AllowAnonymous]
        public HttpResponseMessage GetData(string Skip, string Take)
        {
            try
            {
                if (Result == null)
                {
                    Result = DynamicSqlQuery(Convert.ToInt32(Skip), Convert.ToInt32(Take));
                }
}

1 个答案:

答案 0 :(得分:0)

如果您不希望将数据保存在有角度的一侧,则可以在服务中进行例如http调用

dataStructure = [];

getDataStructure() {

   if (this.dataStructure) {
      return this.dataStructure;
   }else{

  return this.http.get<any>(
           this.url + 'values',
                { headers: headers }
              ).pipe( 
                tap( data => this.cachedData = data )
              );

   }                        
}

点击不会订阅,您按常规订阅在组件中,当数据到达时,点击将副本保存在内存中,以便下次调用返回该副本。

请参阅SB中的示例(选项12):https://stackblitz.com/edit/angular-rb5vmu

您可以在日志中看到从服务器,然后从缓存中提取了第一个调用。