我如何加快我的MVC asp.net网站?

问题描述:

嗨每个人我正在使用C#在asp.net中构建我的第一个MVC 3网站我在网站的速度方面遇到了一些麻烦,因为它需要超过45秒才能展开或收缩显示数据库的表。我如何加快我的MVC asp.net网站?

我已经包含了我对其中有我的jQuery它

我一直在试图找出如何使用缓存,但我担心的是,数据不会是最新的,当管理人员需要的reportTemplate码最新数据

@{ 
ViewBag.Title = "ReportTemplate"; 
} 

<script language="javascript" type="text/javascript"> 
$(document).ready(function() { 

    toggle = function (className) { 
     $('.' + className).toggle('fast'); 
    } 


}); 

</script> 

<h2>ReportTemplate</h2> 

<p> 
@Html.ActionLink("Create New", "Create")  
</p> 
<table> 
<tr> 
    <th> 
     INVESTMENT AREA 
    </th> 
    <th> 
     MAJOR PROGRAM 
    </th> 
    <th> 
     MANAGER 
    </th> 
    <th> 
     PROJECT 
    </th> 
    <th> 
     SPA 
    </th> 
    <th> 
     PA 
    </th>         
</tr> 

@{ 
string investment_area = ""; 
string major_program = ""; 
string manager = ""; 
string project = ""; 
string spa = ""; 
string pa = ""; 
string iaClass = ""; 
string mpClass = ""; 
string manClass = ""; 
string pjClass = ""; 
string spaClass = ""; 
string paClass = ""; 
} 
    @foreach (var item in Model) 
{ 
iaClass = item.investment_area.Substring(0, 2); 
mpClass = item.major_program; 
manClass = item.manager; 
pjClass = item.project; 
spaClass = item.spa; 
paClass = item.pa; 

    if (investment_area != item.investment_area) 
{ 

<tr>   
    <td class = "ndeTable ui-widget-header pointer border" onclick="toggle('@iaClass')" colspan="6"> 
     @item.investment_area 
    </td> 
</tr> 

} 
investment_area = item.investment_area; 

if (major_program != item.major_program) 
{ 

<tr class="@iaClass"> 
<td style = "width :200px"></td> 
    <td class = "ndeTable pointer border" onclick="toggle('@mpClass')" colspan="5"> 

    @item.major_program 

    </td> 
</tr>  
} 
major_program = item.major_program; 

if (manager != item.manager) 
{     
<tr class = "@iaClass @mpClass"> 
<td></td> 
<td style = "width : 100px"></td> 
    <td class = "ndeTable pointer border" onclick="toggle('@manClass')" colspan="4">  
    @item.manager 
    </td>     
</tr> 
} 
manager = item.manager; 

if (project != item.project) 
{ 
<tr class = "@iaClass @mpClass @manClass"> 

<td></td> 
<td></td> 
<td style = "width : 200px"></td> 

    <td class = "ndeTable pointer border" onclick = "toggle('@pjClass')" colspan="3"> 
    @item.project 
    </td> 
</tr> 
} 
project = item.project; 

if (spa != item.spa) 
{ 
<tr class = "@iaClass @mpClass @manClass @pjClass"> 

<td></td> 
<td></td> 
<td></td> 
<td style = "width : 325px"></td> 

    <td class = "ndeTable pointer border" onclick = "toggle('@spaClass')" colspan = "2"> 
    @item.spa 
    </td> 
</tr> 
} 
spa = item.spa; 


<tr class = "@iaClass @mpClass @manClass @pjClass @spaClass"> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td style = "width: 200px"></td> 
    <td class = "ndeTable pointer border" onclick = "toggle('@paClass')" colspan = "1"> 
    @item.pa 
    </td>   
</tr> 

pa = item.pa; 
} 
</table> 

我将继续努力,以优化在此期间的代码,但如果任何人有任何提示或技巧,我可以使用,因为这一直困扰我在过去的几个,我将非常感激一个小型数据库的日子和45秒是荒谬的。感谢您的时间。 干杯, James

+0

你是什么意思“展开/合同”? MVC代码只会影响页面加载速度,而不会影响任何JQuery UI活动。 – Lazarus 2012-01-13 16:53:51

+0

当你点击说投资区的细胞时,该投资区的孩子们应该扩大或缩小显示或隐藏主要项目经理的水疗中心等......如果我含糊不清,我很抱歉,因为这是我的第一个问题仍然在努力寻找正确的问题,并感谢您的快速响应! – Goldentp 2012-01-13 17:11:16

+0

有没有人认为它可能是jQuery调用的切换功能,因为这是网站真正减慢速度的部分。是否有另一种方式让桌子扩大或缩小投资区域的孩子,而不会像现在这样慢下来? – Goldentp 2012-01-13 17:21:58

启动sql profiler/sql trace并检查您在创建页面的单个http请求期间正在执行多少查询。查询通常是导致性能问题的原因之一。单纯渲染视图几乎不可能花费太多时间。

+0

我已经启动了SQL分析器并开始了一个新的跟踪,但究竟是什么我在寻找?我应该寻找很长的跟踪时间或大量的读写操作吗?我也想感谢您的快速响应! – Goldentp 2012-01-13 17:31:46

+0

在这种情况下寻找大量的读取。为获取页面的所有数据而发布的查询数量是多少?特别是,如果您使用的是ORM,那么您可能会选择n + 1个问题。 – pkmiec 2012-01-13 17:45:36

可能会发生这样的情况,即您尝试在表格中显示的记录过多。你应该使用分页。看看datatables.net这是一个不错的jquery插件,可以帮助你进行分页。确保您使用的是server side processing。当然,你将不得不改变你的代码(服务器端和客户端)。

+1

我无法真正使用分页,因为这个网站需要快速浏览当前的项目和投资领域。这就是为什么我使用切换,以便所有信息都在一个页面上,以便于受损技术轻松访问。谢谢你的快速回应! – Goldentp 2012-01-13 17:42:48

+0

您在页面上显示多少行?另外,您可以发布您在服务器端执行的数据库查询吗? – 2012-01-13 17:56:55

+0

它看起来像它没有任何关系的SQL查询我绝对认为这是切换功能我只是通过改变切换到slideToggle改进了20秒的速度 – Goldentp 2012-01-13 19:31:24

您正在使用哪种浏览器?旧版浏览器没有新版本的Javascript性能,并且可能同时暴露或隐藏的面板数量无疑是问题的原因。

我同意处理分页的答案,这是一个很好的选择,可以减少一次提交的数据量,也可以减少同时显示的元素数量。 Javascript的执行不是即时的,而且在旧的浏览器上它确实很慢。