Часто встречаются споры между сторонниками делать обработку данных на серверной стороне (основной аргумент - безопасность) и сторонниками максимально загружать клиента (аргумент - не перегружать сервер).
Я раньше серверную сторону использовал только как посредника и замучался возиться со взломщиками. Хочу доучиться, и сразу возник вопрос об основном принципе. Правильно ли я понимаю, что почти в каждом запросе нужно делать сначала SELECT а затем UPDATE или INSERT в зависимости от задачи? То есть раньше я обращался к пхп скриптам уже с чёткой целью, и обычно в каждом скрипте был 1 запрос к MySql. Но если планировать делать всё на сервере, получается - сначала SELECT затем второй запрос с операцией.
2 вопроса:
1. Правильно ли я понял основной принцип. Если нет - то прошу сформулировать просто для дурака, что значит обрабатывать данные на серверной стороне
2. Если я понял правильно, сильный ли рост нагрузки на сервер выйдет из-за того что количество запросов к БД вырастет примерно в два раза?
Спасибо.
Обработка данных на серверной стороне - основной принцип
Re: Обработка данных на серверной стороне - основной принцип
1. Да вы все правильно поняли. Если нужно что-то купить, делаете запрос, проверяя есть ли у пользователя достаточно денег, если есть покупаем, если нет то ругаемся)))
2. Если у вас запросы к серверу идут по действиям пользователя, то есть каждый пользователь не долбит постоянно сервер по 5 раз в секунду, то 3 - 4 запроса в БД это не нагрузка для сервера. В пример поставлю популярные CMS такие как Drupal или Joomla там по 50 запросов на каждую загрузку страницы)))
2. Если у вас запросы к серверу идут по действиям пользователя, то есть каждый пользователь не долбит постоянно сервер по 5 раз в секунду, то 3 - 4 запроса в БД это не нагрузка для сервера. В пример поставлю популярные CMS такие как Drupal или Joomla там по 50 запросов на каждую загрузку страницы)))
Re: Обработка данных на серверной стороне - основной принцип
1) Можно использовать WHERE:
И узнаем, сколько строк обработано. Это более оптимизировано.
2) Будет нагрузка. Но что поделать. Главное безопасность.
Код: Выделить всё
UPDATE health=maxhealth, cash=cash-500 WHERE cash>=500 AND vkid=1
2) Будет нагрузка. Но что поделать. Главное безопасность.
Re: Обработка данных на серверной стороне - основной принцип
На клиенте следует выполнять операции, которые не требуют их скрытия от пользователя.
Например, если надо получить только количество символов в тексте, то можно посчитать их на клиенте и передать одну цифру, а не передавать весь текст и делать подсчет на сервере.
Нагрузка на сервере будет сильно заметна при большом количестве пользователей. Чтобы снизить её в этом случае, можно использовать кэширование. Всё конечно же не закэшировать.
Например, не вытаскивать каждый раз таблицу рекордов из базы, а хранить кэш, который обновлять раз в несколько секунд/минут.
Например, если надо получить только количество символов в тексте, то можно посчитать их на клиенте и передать одну цифру, а не передавать весь текст и делать подсчет на сервере.
Нагрузка на сервере будет сильно заметна при большом количестве пользователей. Чтобы снизить её в этом случае, можно использовать кэширование. Всё конечно же не закэшировать.
Например, не вытаскивать каждый раз таблицу рекордов из базы, а хранить кэш, который обновлять раз в несколько секунд/минут.