AJAX вызов как встроенный код JavaScript вместо документа. уже для производительности - PullRequest
0 голосов
/ 28 апреля 2011

Для повышения производительности я делаю вызов ajax, как только сервер начинает рендеринг ответ. У меня есть вызов ajax как встроенный в пользовательских элементов управления dotnet.

<script type="text/javascript"> 
   // make ajax call here 
   $.ajax({
      url: '/test.aspx',
      success: function(data) {
       // store the data in a global variable
      }      
    });                                     
</script>

Я закончу вызов ajax и сохраню значение в глобальной переменной. JQuery на главной странице. Я не хочу делать вызов в документе. Уже так как он ждет, когда Дом будет готов. Теперь у меня есть следующие вопросы.

  1. Как я могу убедиться, что JQuery получает загружается до запуска этого встроенного кода
  2. Есть ли лучший способ сделать получить производительность, так как это клиент на серверный звонок

1 Ответ

2 голосов
/ 28 апреля 2011
  1. Браузер будет блокировать и обрабатывать теги <script> в том порядке, в котором он их видит - поэтому люди используют $(document).ready, чтобы остановить , чтобы это не произошло. Если вы убедитесь, что ваш jQuery.js включен на страницу раньше, чем этот код, у вас все будет в порядке.

  2. Если вместо того, чтобы включить этот встроенный блок скрипта в элемент управления .ascx, вы вызываете ClientScriptManager.RegisterClientScriptBlock(), чтобы зарегистрировать его, вы можете сделать так, чтобы этот скрипт отображался вверху страницы, а не в точке. где элемент управления включен, что потенциально может дать незначительное увеличение производительности.

Редактировать: некоторые дополнительные объяснения.

При обработке страницы браузер будет нажимать на теги <script> в том порядке, в котором они существуют в HTML. Когда это произойдет, он должен либо загрузить скрипт, а затем запустить его, если у тега есть атрибут src - как ваш jQuery.js - или просто запустить скрипт, если он встроенный в JavaScript. Но он должен делать это по одному, в порядке, в котором они обслуживаются. Посмотрите это видео для визуализации этого.

Вот почему, если ваш jQuery.js включается до вашего встроенного ajax-вызова, вам не нужно беспокоиться о загрузке jQuery до того, как ваш встроенный код сработает. Так что не беспокойтесь о первой части вашего вопроса.

Что касается второй части вашего вопроса, если вызов ajax является встроенным JavaScript в вашем пользовательском элементе управления, он будет где-то посередине вашего HTML (в зависимости от того, где на вашей странице включен элемент управления). Если вы используете ClientScriptManager.RegisterClientScriptBlock(), ASP.NET вставит скрипт в верхнюю часть страницы (довольно близко к верху <body>, хотя после viewstate и некоторых других шаблонов ASP.NET), поэтому он будет обработан немного раньше , Я подозреваю, что разница вряд ли будет существенной, если только ваша страница не очень большая и элемент управления не подходит к концу.

Это помогает?

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