[英]Asp.net MVC real time application performance
我正在尝试创建一个asp.net mvc Web应用程序,某些页面需要“实时”显示数据,该数据位于sql server数据库中,数据总是在变化,因此我在sql server中创建了一个存储过程,我在使用实体框架linq的控制器中调用此过程,并使用ajax将结果发送到浏览器。我使用outputcashing最大限度地减少了存储过程的执行次数,在同一控制器中,有多种方法使用同一存储过程,每个方法methode执行相同的过程,如何提高我的应用程序的性能,是否有一种方法可以对所有控制器仅执行一次存储过程?
这是我的控制器,我的目标是最大程度地减少数据库的使用
[OutputCache(Duration = 20, VaryByParam = "*")]
public class JobsETLController : Controller
{
private ETL_REP_MAUIEntities db = new ETL_REP_MAUIEntities();
public ObjectResult<BIOGetETLJobs_Result> ETLJobs;
public JobsETLController()
{
ETLJobs =db.BIOGetETLJobs();
}
public ActionResult Indexp()
{
var y = from xx in ETLJobs
where xx.etat!="Completed"
orderby xx.etat ascending
select xx;
return PartialView(y);
}
public ActionResult IndexpAll()
{
var y = from xx in ETLJobs
where xx.etat == "Completed"
select xx;
return PartialView(y);
}
如果您的服务器不在Web场中(多个服务器),则可以将数据缓存在Asp.net缓存中(这不是输出缓存,而是数据缓存)。 您只需为数据过期时间设置5分钟的时间限制(您说数据需要每5分钟更新一次),这样当控制器需要数据时,它首先检查缓存,如果不存在,它将执行存储过程。
MyData items;
items = (MyData)Cache["MyData"];
if(items == null)
{
items = DoQueryToReturnItems();
Cache.Add("MyData", items, null, DateTime.Now.AddMinutes(5), ..);
}
甚至可以将缓存项设置为依赖于SqlDependency,以便在数据更改时可以更新缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.