У меня проблема с моим приложением. Время загрузки варьируется от 500 мс до 5 секунд, а в экстремальных ситуациях - 10 секунд, что для меня немного странно, поскольку я новичок в веб-разработке. Загрузка моя страница выглядеть следующим образом:Идентификация времени загрузки страницы узких мест
- пользователя нажмите
- Перед входом проверки контроллера, если пользователь имеет разрешение на это
- Ask Active Directory, учетные данные и задать свою базу данных прав
- метод вызова из контроллер Загрузите страницу или сообщите об ошибке
Может ли сервер AD вызвать такую задержку?
Даже если я выключаю страница аутентификации загружается в течение 3 секунд, которые могут путем сверления, когда вы видите «ждете LOCALHOST» знак :)
ниже образца, которые принимают в среднем 3 секунды, чтобы загрузить без аутентификации. метод управления:
public ActionResult Index(string name, string surname ,string deviceName, string deviceManufacturer)
{
var deviceusages = db.DeviceUsages.Include(d => d.DeviceInstance).Include(d => d.Storage).Include(d => d.User).Where(w=>w.UserId!=6);
if(name!="" && name!=null)
{
deviceusages = deviceusages.Where(w => w.User.Name.Contains(name));
}
if (surname != "" && surname != null)
{
deviceusages = deviceusages.Where(w => w.User.Surname.Contains(surname));
}
if (deviceName != "" && deviceName != null)
{
deviceusages = deviceusages.Where(w => w.DeviceInstance.Device.Name.Contains(deviceName));
}
if (deviceManufacturer!= "" && deviceManufacturer != null)
{
deviceusages = deviceusages.Where(w => w.DeviceInstance.Device.Manufacturer.Contains(deviceManufacturer));
}
return View(deviceusages.ToList());
}
И cshtml страница:
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.DeviceInstance.Device.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.DeviceInstance.Device.Manufacturer)
</th>
<th>
@Html.DisplayNameFor(model => model.Storage.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.User.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.User.Surname)
</th><th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.DeviceInstance.Device.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.DeviceInstance.Device.Manufacturer)
</td>
<td>
@Html.DisplayFor(modelItem => item.Storage.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.Surname)
</td>
<td>
@Html.ActionLink("Details", "Details", new { id=item.DeviceInstanceId })
@if (item.UserId == 1)
{
@Html.Raw("| ")
@Html.ActionLink("Claim", "ClaimDevice", new { id = item.DeviceInstanceId })
}
</td>
</tr>
}
</table>
А теперь мой вопрос, что я сделал что-то неправильно или мое время загрузки в порядке, и я просто новичку
Насколько велики таблицы db здесь? – Andrei
max 8 столбцов x 40 строк x int или varchar (50) в каждой ячейке. Ничего особенного – szpic
1) при запуске localhost подключается отладчик, который замедляет работу в 5-10 раз. 2) Те запросы EF будут медленнее, чем простой запрос '==' (.contains() является эквивалентом 'LIKE' в SQL, который не имеет хорошей скорости относительно фактического соответствия значения и 3) вы присоединяются также к нескольким столам вместе, что может повлиять на скорость и производительность. В целом, я думаю, ваша проблема просто работает с приложением отладчика. Попробуйте вытолкнуть фактический веб-сервер, а затем измерьте свою производительность. К сожалению, для использования используется – Tommy