2009-07-18 3 views
0

У меня вопрос с дизайном. У меня есть сайт, на котором пользователи вводят короткие сообщения, и они отображаются другим пользователям. Иногда эти сообщения имеют форматирование в них, поэтому мне нужно манипулировать строками. Я могу сделать это либо на сервере, либо на клиенте. Мой вопрос: где это должно произойти?Сайт asp.net - должны ли манипуляции строк на сервере или клиенте?

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

Если это происходит на клиенте, то манипулирование строками смещается к пользователям, но я не уверен, насколько эффективна обработка javascript/jquery string.

Любые мысли по этому поводу?

+0

Простите, что я не учитывал тот факт, что при выполнении строковых манипуляций иногда вызывается база данных. Это была основная причина, по которой я это сделал на сервере. Тем не менее, я знаю, что ajax упрощает выполнение этого типа от клиента - вот почему я думаю о том, чтобы идти по этому маршруту. – codette

+0

Пожалуйста, отредактируйте ваш вопрос с помощью этой информации, а затем удалите комментарий. –

ответ

0

Ну, я не уверен, как вы получаете эту строку другим пользователям, но я предполагаю, что вы отправляете ее на свой сервер в любом случае, так что задавайте вопрос, должны ли вы очистить его от клиента, а затем отправить его на сервер или просто взять все, что вы получаете, и очистить его на сервере.

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

Что следует учитывать ... если вы делаете это только в javascript, у вас нет гарантии того, что вы получаете, так как вы не проверяете/не очищаете строку на сервере. Это может быть опасно в зависимости от того, как вы отправляете эту информацию другим пользователям. Просто подумайте об атаках с использованием javascript.

Если вы делаете это на сервере, вам не нужно беспокоиться об этом, потому что вы можете гарантировать, что вы отправляете именно то, что вам нужно, а не просто проходить через все и надеяться, что javascript на клиенте вы покрыли.

Действительно ли вы выполняете так много транзакций, что манипуляции с строками являются значительным фактором по сравнению с любыми другими операциями, которые вы выполняете на каждой стороне сервера сообщений?

2

Я не могу представить себе «короткое сообщение», которое потребовало бы так много манипуляций с строкой, что клиентская машина заметно уступала бы серверу. Положите его на клиента.

+0

Сначала это не показалось значимым. Но, протестировав его, если я выполняю строчную манипуляцию на сервере, для получения данных пользователем требуется секунда. Если я не выполняю никаких строковых манипуляций, это займет примерно половину времени.(в этом случае строковая манипуляция выполняется при вставке и при чтении никаких манипуляций не требуется) Это основано на результатах поиска с помощью firebug. – codette

+0

Если на сервере это занимает много времени (что, вероятно, не намного более мощно, чем домашний компьютер), вы должны определенно распределить нагрузку, выполнив его на клиенте. –

0

В зависимости от вашего определения короткого (> 1024 символа работает для меня), вы должны были бы перевернуть много из них, чтобы быть значительным для вашего сервера.

Это говорит о том, что чем меньше круговых поездок вы можете сделать со своего клиента на сервер, тем лучше. Сначала попробуйте сделать это в JavaScript. Затем переместите его на сервер, если вам нужно.

0

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