MySQL и голосования

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

Не нужно каждый раз, перед добавлением, проверять SELECT-ом, не голосовал ли уже этот пользователь. Почитайте про PRIMARY KEY и UNIQUE, с их помощью задайте условие на уникальность полей. Уберите SELECT, сразу же добавляйте данные в таблицу. Если попытаетесь добавить данные, которые там уже есть — mysql выдаст ошибку.

Кстати, заодно почитайте про то, как эти индексы используются. И если определяете посетителя по IP — не забудьте, что IP нужно хранить в поле типа INT.

Дайте клиенту поработать

Все современные браузеры более-менее поддерживают основные функции JavaScript. Облегчите труд сервера, используя JS на стороне клиента.

Например, если после авторизации в меню добавляются парочка каких-то дополнительных ссылок — с помощью JavaScript проверьте Cookies на предмет присутствия логина/временного ID и добавьте эти ссылки. Так я сделал у себя на finds.ws: сама страница — статичный XHTML, но у авторизированных юзеров отображается немного по-другому.

mod_deflate и аналоги

Наверняка вы слышали про модуль Apache, который сжимает содержимое перед отправкой клиенту — mod_deflate. Во многих дистрибутивах этот модуль включен и настроен по умолчанию. Но часто встречается, что настроено сжатие только содержимого типа text/html. Проверьте свою конфигурацию, добавьте все mime-типы, которые вы используете: настройка mod_deflate. Картинки, конечно же, добавлять не нужно, только текстовые типы. ;)



4 Responses to “Tips&Tricks, часть 2”  

  1. …с помощью JavaScript проверьте Cookies на предмет присутствия логина/временного ID и добавьте эти ссылки

    Антон, использовать для авторизации Cookies – это самому сделать дыру в безопасности сайта.

  2. 2 Ugnich Anton

    2larin: вы, наверное, как-то не так меня поняли. :) Что ж еще использовать, как не cookies?!
    О какой дыре вы говорите?

  3. 3 Serge

    Идея с javascript не нова. Таким же образом (через Cookies) у нас реализуется отображение корзины заказов (на совершенно статических страницах магазина). А скрипты обслуживают только партнёрские ссылки и сами заказы. Это значительно снижает нагрузку на сервера. При такой технологии всего два средних по мощности сервера обслуживают потоки в 3-4 миллиона посетителей в сутки.

  4. 4 Ugnich Anton

    2Serge: спасибо, что поделились опытом. А про новизну я ничего и не говорил. ;)


Leave a Reply