所以,这就是场景。
有一个静态类根据提供的数据进行一些计算。
public static class Calculations
{
public static object Calculate(IList<Class> listOfClass)
{
/// going to database and do calculations....
return calculatedValue;
}
}
现在在页面加载时,我们同时制作20个AJAX请求(仅使用JQUERY),它在控制器中调用不同的动作。所以举个例子。
public class ClientController
{
[HttpPost]
public IActionResult GetAGraph(Object model)
{
var listOfClass = // get data based on the model
var calculatedValue = Calculations.Calculate(listOfClass);
var returnObject = //do something with calculatedValue
return Json(returnObject);
}
[HttpPost]
public IActionResult GetSecondGraph(Object model)
{
var listOfClass = // get data based on the model
var calculatedValue = Calculations.Calculate(listOfClass);
var returnObject = //do something with calculatedValue
return Json(returnObject);
}
[HttpPost]
public IActionResult GetThirdGraph(Object model)
{
var listOfClass = // get data based on the model
var calculatedValue = Calculations.Calculate(listOfClass);
var returnObject = //do something with calculatedValue
return Json(returnObject);
}
}
它没有做同样的事情,因为客户条款,我不允许发布实际代码。
我想要实现的不是在每个控制器动作上进行相同的计算,而是如果我们可以在全局某处存储计算值并将其用于后续调用,那么它将提高性能并节省大量时间或任何其他解决方案不要一次又一次地进行相同的计算。
注意:无法使用内存缓存,因为每晚都会上传新数据,这会影响计算。
谢谢大家的帮助!!
答案 0 :(得分:2)
有几种方法可以优化性能,但鉴于您的问题中缺少具体细节,建议会有点受限:
更具体的内容有助于提供更实际的答案。
答案 1 :(得分:0)
从我的理解你只需要存储calculatedValue somwhere!
如果只在同一次运行中需要它,你可以在静态全局变量中存储它, 如果用户之间的值不同,您也可以将其存储在会话中, 如果所有用户的值相同,则可以使用每次需要刷新calculatedValue时都会覆盖的文件;
因此,如果calculatedValue必须每天更改一次,那么您每天必须刷新一次