самый эффективный способ обновить сайт (много данных) без обновления? - PullRequest
0 голосов
/ 19 сентября 2009

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

Ожидаемое количество данных - 70 уникальных строк, в каждой по 14 полей, которые необходимо регулярно обновлять. Всего 980 полей.

Сначала я попытался выполнить серию синхронных ajax-запросов к базе данных, используя цикл for для обновления всех полей. Это вызвало большой зависание. Я бы сказал, что в течение 20 секунд из моих 30 секунд между обновлениями страница зависла.

Следующая попытка состояла в асинхронном выполнении ajax-запросов с последующим обновлением полей в цикле for. Это облегчило замедление, но у меня были странные проблемы. Я думаю, что мое изменение переменной цикла for приводило к тому, что что-то записывалось в неправильные элементы HTML.

В настоящее время у меня есть внутренняя страница .asp, пишущая HTML, и очищающий innerHTML содержащего div, затем устанавливающий div.innerHTML = transport.responseText. Мне кажется, это работает очень хорошо, но мне просто любопытно, что бы сделали другие, чтобы обновить этот большой объем данных с учетом доступных инструментов (vbscript, javascript и базы данных Access).

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

Ответы [ 2 ]

1 голос
/ 19 сентября 2009

HTML-таблица с 1000 полями не является «большим объемом данных».

Если вы дадите идентификатор каждой ячейке и получите данные с помощью JSON или простого CSV, а затем обновите все с помощью javascript, это будет быстрее, поскольку браузеру не нужно перерисовывать таблицу и создавать новые структуры DOM.

Пример:

Представьте, что сервер предоставляет вам данные следующим образом: 12,234,564,423,1223,2413,133,113,5443 ...

тогда в javascript вы можете сделать:

var data = responseText.split(',');

и затем заполните таблицу (предположим, что ячейки таблицы имеют идентификаторы, такие как CELL_0, CELL_1, CELL_2 ...).

for (i=0; i<data.length; i++) {
  document.getElementById('CELL_'+i).innerHTML=data[i];
}

Вот и все.

0 голосов
/ 19 сентября 2009

Как пользователи должны взаимодействовать со страницей? Будут ли несколько пользователей работать с одними и теми же данными в одно и то же время и ожидают ли они увидеть результаты друг друга? Вы отметили этот asp.net, но упомянули только возможность использовать vbscript, javascript и access - как это asp.net?

Edit:

Спасибо за разъяснения. Поможет ли кнопка редактирования / сохранения в каждой строке? Строки будут считываться только до тех пор, пока пользователю не понадобится редактировать свои данные (я предполагаю, что они редактируют каждую строку), данные обновятся, и строка будет заблокирована для редактирования любым другим пользователем. Когда пользователь завершает работу, он нажимает кнопку «Сохранить» и его данные обновляются, строка разблокируется, а данные страницы обновляются. Кроме того, можно настроить запуск ajax каждые несколько минут, чтобы получать последние сведения, когда пользователь не активно редактирует. Также - в зависимости от того, как структурированы ваши данные - вам нужно только получить данные, которые были изменены с момента последнего обновления страницы пользователя. Не нужно все получать каждый раз. Ваше обновление также должно быть небольшим, ограниченным только данными в строке пользователя, которую они редактируют.

...