Итак, у меня есть это действие в моем контроллере mpc asp.net, который получает параметр int и возвращает некоторые json, зависящие от него. это как это действие выглядитнесколько запросов ajax к одному и тому же действию ASP.NET одновременно
Public JsonResult GetSomeData(int intParam)
{
var someData = _someService.GetSomeDataByIntParam(intParam);
return Json(someData);
}
Так что нет ничего особенного здесь, вся работа, необходимая осуществляется экземпляром SomeService
и тогда действие просто возвращает JSON. эта часть _someService.GetSomeDataByIntParam(intParam);
занимает в среднем от 35 до 80 миллисекунд. В интерфейсе у меня есть код JQuery, который вызывает вызов Ajax для этого действия, и когда он получает ответ, он просто помещает данные из json в DOM. это код JQuery (включая некоторые razor
)
@foreach (var intParam in Model.IntParams)
{
<script type="text/javascript">
$.ajax({
type: 'POST',
url: '/SomeController/GetSomeData',
data { intParam: @intParam },
success : function (response) {
var responseParam = response.param;
if (response.anotherParam)
responseParam += '<span class="some-class">!</span>';
var someForm1 = $('#[email protected]');
someForm1.children('span.some-another-class').html(responseParam);
var someForm2 = $('#[email protected]');
someForm2.children('span.some-another-class').html(responseParam);
}
});
</script>
}
Там будет в среднем 3-10 элементов Int IntParams
. что js выполняется сразу после визуализации страницы. Таким образом, весь сценарий выглядит следующим образом. страница рисуется, данные json запрашиваются и когда ее доставляются обратно в js, она помещается где-то в DOM. действие, которое возвращает json, вызывает очередность другого запроса во время его выполнения. поэтому, когда те, предположим, 5 действий ajax, вызываемых к действию, только один получает исполнение за раз. (может ли это быть асинхронным без выключения состояния сеанса?) Первый запрос получает ответ в течение 30-80 миллисекунд, а пятый получает ответ через 2-2,2 секунды. это очень важная часть в моем приложении, поэтому я не хочу потерять миллисекунды. Я не понимаю Если действие занимает в среднем 30-80 миллисекунд, почему пятый получает ответ за 2 секунды. не должно ли это быть чем-то вроде 400 (5 * 80) миллисекунд? или эта очередь вызовов - это то, что занимает слишком много времени? Что можно сделать, чтобы сделать некоторые оптимизации. Я получаю изображение, если было выполнено более 10 вызовов, это займет примерно 5 секунд. Так или иначе, что можно сделать, чтобы сделать все это быстро. Любое предложение будет оценено по достоинству. (даже в js-коде)
Да, у меня есть только одна коллекция int в моей модели, но представление на самом деле является частичным представлением о том, почему мне не нужна другая вещь в моей модели. это частичное представление вводится в другом представлении, а другое представление вводится в макет, так что у тех других представлений есть модель, специфичная для них – Dimitri
, а затем создайте определенную модель представления для этого представления со всеми необходимыми свойствами. Я считаю, что ваш нынешний подход наверняка откроет много проблем в будущем. Также его плохая практика для отправки запроса ajax непрерывно в цикле, что в конечном итоге приводит к производительности приложения. Вы можете почувствовать разницу только при работе с данными. – kbvishnu
Мне нужно сделать ajax-вызовы в цикле. Я не знаю, какое количество вызовов будет так, поэтому у меня есть это в цикле, что еще я могу сделать? и все параметры, которые мне нужны для этой точки зрения, уже находятся в модели. Я не могу придумать что-нибудь еще, кроме этой коллекции. – Dimitri