Как я могу ускорить мой сайт MVC asp.net? - PullRequest
0 голосов
/ 13 января 2012

Привет всем. Я работаю над своим первым веб-сайтом MVC 3, созданным на C #, в asp.net. У меня возникли некоторые проблемы со скоростью работы веб-сайта, поскольку для расширения или сжатия таблиц, в которых отображается база данных, требуется более 45 секунд.

Я включил свой код для шаблона отчета, на котором есть мой jquery

Я пытался выяснить, как использовать кеш, но я беспокоюсь, что данные не будут обновляться, когда менеджерам нужны обновленные данные

@{
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 секунд для небольшой базы данных. смешно Спасибо за ваше время. Ура, Джеймс

Ответы [ 3 ]

1 голос
/ 13 января 2012

Запустите sql profiler / sql trace и проверьте, сколько запросов вы делаете во время одного http-запроса, который создает страницу.Запросы часто виноваты в проблемах производительности.Почти невозможно, чтобы только рендеринг вида занимал так много времени.

0 голосов
/ 16 января 2012

С каким браузером вы работаете?Старые браузеры не имеют производительности Javascript более новых, и с количеством панелей, которые вы могли бы одновременно отображать или скрывать, что, несомненно, является причиной вашей проблемы.

Я согласен с ответом, касающимся подкачки, это было бы хорошим вариантом, чтобы уменьшить объем данных, которые вы представляете за один раз, или вы должны уменьшить количество элементов, которые вы раскрываете одновременно.Выполнение Javascript не происходит мгновенно, а в старых браузерах оно действительно медленное.

0 голосов
/ 13 января 2012

Может случиться, что у вас слишком много записей, которые вы пытаетесь отобразить в таблице. Вы должны использовать пейджинг. Взгляните на datatables.net Это хороший плагин jquery, который поможет вам с поиском страниц Убедитесь, что вы используете серверную обработку . Конечно, вам придется многое изменить в своем коде (как на стороне сервера, так и на стороне клиента).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...