#c# #jquery #asp.net #web-services
#c# #jquery #asp.net #веб-сервисы
Вопрос:
Я вызываю несколько функций при загрузке страницы в моем asp.net веб-приложение.
Все функции выполняются методом page ready, смотрите приведенный ниже код
$(document).ready(function(){
func1();
func2();
func3();
//.... so on.
});
function func1()
{
$.ajax({
type: "POST",
url: "Contents.asmx/GetText",
data: "{ }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
/some code
}
});
}
function func2()
{
$.ajax({
type: "POST",
url: "Contents.asmx/GetTitles",
data: "{ }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
/some code
}
});
}
…. как и другие мудрые
Для серверной части я использую SQL server-05. Когда страница загружается, ей требуется больше времени для загрузки, вышеуказанным функциям требуется более 30 секунд для загрузки.
Как оптимизировать вызов функции?..
Комментарии:
1. Итак, как вы думаете, где задержка? В вашем javascript, сервере или SQL server?
2. Что ж, попробуйте оптимизировать свои запросы. Может быть, даже использовать кэширование, чтобы избежать постоянного обращения к серверу БД, если эти запросы дорогие.
3. В javascript. Все методы одновременно вызывают некоторые функции SQL. итак, возникают проблемы.
4. @Darin вы говорите, что мне нужно оптимизировать SQL-запросы.. правильно.
5. любой другой способ оптимизировать вызов Javascript. Если в SQL-запросе нет проблем. тогда??
Ответ №1:
Вы могли бы объединить все запросы в новый веб-метод, который будет выполнять все SQL-запросы одновременно. Затем отправьте один AJAX-запрос этому новому методу. И что касается вашего SQL-сервера, вы также могли бы отправлять несколько SQL-запросов за один цикл. Попробуйте максимально оптимизировать SQL-запросы. Также вы могли бы кэшировать результаты некоторых дорогостоящих запросов.
Комментарии:
1. @Abhishek, что ты пробовал? С какими проблемами вы сталкиваетесь?
2. Я проверяю хранимые процедуры, но на моем локальном КОМПЬЮТЕРЕ они работают нормально, на реальном сервере требуется больше времени для выполнения…
Ответ №2:
Пока /some code
их не слишком много, вы мало что можете сделать. Эти вызовы ajax являются легковесными. Вероятно, ваша проблема в серверной части, куда вы отправляете свои запросы.
Чтобы отладить / профилировать вашу проблему, сначала проверьте ваши ajax-запросы. Проверьте их в веб-инструменте, таком как Firebug, и убедитесь, что ваш запрос ожидаемо. Там вы также можете проверить, какой из ваших запросов занимает сколько времени.
Поскольку теперь вы видите свое узкое место (например, запрос Contents.asmx/GetTitles
занимает так много времени), проверьте свой сервер, который предоставляет эту страницу. Поскольку вы не предоставили код этой функции, мы не можем вам помочь. Но это то, где вам нужно искать дальше.