Об ограничениях

    Как мы знаем из теории о пресловутом web 2.0, для пользователя не должно быть ограничений в ресурсах. Сервис размещения фотографий? Не должно быть ограничения по количеству загруженных фотографий. Сервис закладок? Не должно быть ограничений в количестве закладок. Так можно продолжать очень долго — все сводится к тому, что процессорное время и место на жестком диске в теории бесплатное.

    Но часто и на веб.два.нольных ресурсах, и на обычных сайтах (один из ярких примеров — форумы) мы сталкиваемся с довольно глупыми ограничениями. Я не буду рассматривать всю палитру «запретных плодов», опишу только один ярчайший пример:

    «Этот форум требует ожидания 60 секунд до нового поиска. Вам осталось подождать 56 секунд до нового поиска.», vBulletin

    Как вы поняли из текста ошибки — это ограничение частоты поисковых запросов.

    Чем оно вызвано? Создатель движка считает, что если пользователь будет слишком часто использовать поиск, то он создаст слишком большую нагрузку на сервер. Вообщем-то вполне логично, на поиск серверу требуется затратить много сил. И собственно говоря основной проблемой являются не пользователи, а боты злоумышленников.

    У меня эта ошибка выскакивает очень часто при использовании всевозможных форумов, меня довольно сильно напрягает ждать по полминуты, даже по несколько секунд. Я использую определенный форум несколько раз в сутки (сессиями) — каждый раз делаю несколько поисковых запросов подряд — несколько раз попадаю на ошибку. Это недоделка в юзабилити — причем серьезная — нельзя пользователя просто так заставлять ждать.

    Какое решение? Очень простое. Делать ограничение не «максимально 1 запрос за 1 минуту», а, например, «максимально 60 запросов за 60 минут (час)». Таким образом, я со своими несколькими запросами не буду получать за свою сессию с 3-4 поисками подряд ошибок вообще, а боты как отваливались, так и будут отваливаться. Для особо активных пользователей можно при превышении «60 за 60» предложить ввести капчу еще на 60 запросов вперед (при превышении «1 за 1» капча — не решение, т.к. опять же приходится отнимать у пользователя время).

    Итог: если раньше пользователь делает 5 нужных ему поисковых запросов за 5 минут с выплевыванием ошибок, то теперь он это делает за 1 минуту. Боты как не проходили — так и не проходят.

    Комментарии 34

      +7
      Если уж использовать капчу, то выдавать её после пяти первых запросов. Потом (если уж сильно хочется) — следующих, например, десяти (пользователь может ведь очень настойчиво искать) и т.д. Боты отсеются ещё на первой капче. И никаких ограничений.
        0
        Хорошая идея. Я тоже о нечто подобном сразу подумал.
          0
          Гугль так делает, только после большего количества запросов. Вполне логично перенести решение на аналогиную задачу, вместо того, чтобы изобретать велосипед.
          +1
          В данном случае важно количество одновременных запросов. Таким образом если ботнет из 1000 машин сделает одновременно 60 запросов на поиск, нагнется даже хороший сервер.
            0
            Если ботнет из 1000 машин сделает одновременно 5 запросов, серверу будет легче. А юзеру не очень сложно ввести после пяти запросов одну капчу и продолжить поиски.
              0
              ботнеты сейчас гораздо крупнее, так что думаю если даже 5 одновременных запросов с каждого компа в ботнете - сервер загнётся. надо всё-таки ставить ограничение, например, 1 запрос за 10 секунд и не более 60 в час. и капчу выводить после 3-5 запросов.
              0
              На одноклассниках такая штука есть при поиске людей. (пример)
              +3
              Бывает такое что, когда уже ввел, что искать, шелпнул ентер... Пробегаешься взглядом и видешь.. что опечатался) Быыыстро исправляешь.. а запрос-то уже отправлен.. И.. приходится ждать эти 30, а то и более, секунд))
              • НЛО прилетело и опубликовало эту надпись здесь
              • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  Полностью согласен с предыдущим оратором. Это не столько проблема юзабилити, сколько проблема кривого технологического решения, когда пара тройка пользовательских поисковых запросов ставят раком всю базу данных.
                  Sphinx действительно в данном случае будет рулить.
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Не должно быть ограничений?
                    Тогда получается хабр далек от идеала веб-два-нольного ресурса.
                      0
                      Имеется ввиду технических ограничений. Карма это нечто другое =)
                      0
                      Я в таком случае натравливаю на форум яндекс.
                        0
                        поисковик не сможет искать по конкретным разделам форума. А в случае большого ресурса, вроде хобота, это становится важным.
                          0
                          Все зависит от конкрентных случаев.
                          В любом случае, мне кажется проф.поиск (яндекс/гугль) лучше и удобнее, нежели встроенная форумная искалка.
                            0
                            Дьявол кроется в деталях.
                            А пока решения для всех "конкрентных случаев" не существует, приходется использовать разные, в том числе и встроеный поиск.
                              0
                              Ваша правда :)
                        +2
                        Никакие сообщения об ограничениях пользователю не должны выдаваться в принципе. Это, вообще-то, азы юзабилити. Читайте Раскина хотя бы.

                        Вместо того, чтобы портить пользователю поиск, система должна делать паузу незаметно для пользователя. Запрос пусть отправляется себе спокойно, но обработка его на сервере откладывается. Чтобы пользователь не терялся в догадках, почему нет результатов, должен быть немодальный индикатор процесса, можно писать что-то вроде «Запрос будет обработан через...», «Вы получите результаты примерно через...».
                          +1
                          Чтоб решить эту проблему - надо делать масштабируемые приложения
                          Выделил под поиск отдельный сервер с репликой базы - и пусть там демон по крону постоянно индексы лопатит
                            0
                            а еще купить с десяток мэйнфреймов....
                            ну о чем вы вообще?
                              0
                              Достаточно двух баз в MySQL, в общем-то. Но по хорошему - не должен поисковый запрос лочить всю базу.
                              –5
                              Почемуто для многих проекты ( будемговорить веб 2 хоть это и идиотизм ) должны быть бесплатными и безграничными
                              это тоже заблуждение что и с опен сорц
                              опен сорц не всегда есть бесплатный
                              вы можите купить софт с открытым кодом
                              но я так понимаю 98 процентов любителей пенкода это просто халявщики в лучшем случае попипастеры
                              и опенсорц-безоплатно я так понимаю нравится и любимо очень многим
                              но как рарабатывать тем кто делает софт ? я не говорю о больших компаниях
                              также и здесь
                              любитеи грузить свой мусор на сервера это бльшая проблема
                              и новое развитие сети уже готово к тому чтоб отсеивать пользователей
                              если ты мне не интересен буть добр пошел вон
                              халявщиков нелюбят нигде
                              и ты должен платить за место на диске и за процесорное время и подобные вещи
                              если ты не оплачиваешь это наличными то ты должен создавать возможности зарабатывать на твоих фото если это фото сторадж ( и так далее)
                              также с форумами исо всем остальным
                              мы живем в материальном мире и каждый юзер длжен приность деньги а не забирать их
                              если сеть монитизирует трудоусилия юзера то она это делает только тому кто нужен сети
                              если ты просто ползуешь систему или создаешь виртуальных юзеров или не принес ни копейки должен быть выключен
                              роботы уже готовы монетизировать пользователей и если баланс не в пользу юзера он долен убраться с сервиса
                              этомои мысли о юзерах и сетях
                              многие компании имеют подобные мысли
                              а сети на РНР и мускулах вообще чдеса природы
                              потоум обсуждать булетени смешно
                                0
                                никогда не придираюсь к орфографии, сам криво пишу, но тут я смысл даже не смог полностью понять, а главное связать с топиком. если говорилось, что человек, который ресурсу(форуму) ничего не приносит, ничего и требовать не может - это глупо. человек этот, как минимум, приносит хьюмон-трафик, а как его использовать - это дело конкретного ресурса. про майскуль - это вы к гугле, расскажите им, какое это чудо природы :)

                                если в тему, про поиск, то многие форумы снижают "строгость" ограничений, если вы зарегестрированный пользователь. плюс согласен с neGODnic, лучше откладывать запросы, если высокая нагрузка и выдавать их чуть позже
                                  –1
                                  я извеняюсь за качество писанины но немогу я на русском писать декватно.
                                  я не слежу за качеством букв.
                                  про РНР и мускул я говорил как связка.
                                  на счет гугля и мускула это можно сравнить с кольцевыми гонками где заводское это только найм марки авто.
                                  на счет хюмен трафика: будем говорить так эти цифры разве что можно было показывать на таблице сравнения в гугль эдвордс для старта соих объяв.
                                  но сейчас это все меньше имеет значения.
                                  сейчас больше имеет значение рекламного хистори ( это сравнимо с банковской хистори ),
                                  когда есть показатели выгодности рекламы на данном ресурсе а не его заоблачные трафики.
                                  в жизни журналы всегда дописывают себе тираж чтоб с рекламодателей брать денег побольше
                                  здесь было также но сейчас время меняется.
                                  потому если неприносиш выгоды ресурсу неможешь его юзть бльше чем стартовые возможности
                                  разработчики хотят кушать и их девушки хотят мак эир, за это нужно платить, а значит нужно платитьи за сервис.
                                  ну вы можите не соглашаться но все все кто занимается инвестициями или предоставляет мнимо бесплатных сервис всегда знают по какой причине они это делают.
                                  ну наверно действительно это дальше темы о форуме подобным белютеням и бб
                                  0
                                  Не могли бы перевести на русский? Думаю здесь мало кто что-либо понял из Вашего комментария.
                                    0
                                    Он написал следующее (перевожу на русский):

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

                                    А ещё сети, работающие под PHP и mysql — чудеса природы, поэтому обсуждать форумы на их основе смешно. Вот такие у меня мысли о пользователях и сетях»
                                    +2
                                    Кстати, бесит ещё, когда стоит ограничение на количество символов для поиска.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      0
                                      Думаю, проблема в том, что админам лень исправлять уже готовые форумы. В стандартных настройках далеко не всегда можно изменять одновременно число запросов и промежуток.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          0
                                          мда... пожалуй самый "оригинальный" вариант сегодня))
                                          0
                                          Идеальный вариант - суммировать всё вышесказанное.
                                          То есть - 30-60 запросов в час, капча после 5 запросов (ещё +5).
                                          А боты... даже если ждать минуту, всё равно 5000 ботов сделают нагрузку на сервер достатучную, чтобы его положить (а 5000 - мелочи, по нынешним меркам).
                                          В любом случае - захотят - положат. А юзабилити - превыше всего.

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

                                          Самое читаемое