Задать вопрос
  • Как лучше проверять авторизован ли пользователь?

    evnuh
    По секрету скажу, что сессии по дефолту хранятся в файлах на жестком диске, поэтому выборка данных из сессии будет не быстрее, чем выборка данных из БД.

    - Понимаю, что вопрос был задан давно и НЕ об этом, но не смог пройти мимо. Львиная доля в ускорении сайта заключается в кешировании того или иного. Кеширование данных в базе может быть настроено таким образом, что все, необходимые Вам данные будут лежать либо в кеше, либо в индексах, т.е. в оперативке, и доступ к ним не потребует обращения к диску.
    Сплошь и рядом встречается архитектура, при которой БД и скрипты бекенда разнесены по физически разным серверам. В этом случае даже если база вся целиком висит в кеше, но есть лаг на сети, скорость доступа к локальным ресурсам (файлам сессии) обойдёт "долгий" запрос к удалённому серверу.
    В то же время ОС (тот же линукс) из коробки умеет кешировать файлы, доступ к которым осуществляется достаточно часто. Таким образом, если углубиться в администрирование своего сервера и настроить принудительное кеширование файлов с сессиями, опять получится хранить/брать данные из ОЗУ, что несоизмеримо быстрее традиционных дисковых операций.
    Следующий момент (дополняющий предыдущий) это всевозможные tmpfs и прочие файловые системы, "размечающие" область в оперативке и позволяющие работать с ней как с диском. Если Вы изначально храните Ваши сессии в такой системе - опять-таки получаете бонус по скорости обработки данных.

    Т.е. Ваше утверждение о "выборка данных из сессии будет не быстрее, чем выборка данных из БД" - правомерно лишь для ряда случаев. Если же у нас есть непосредственный доступ к администрированию сервера, то уже исходя из реалий мы сами должны осознано установить приоритеты (кому дать больше оперативки, а кого оставить на io, потому что оперативка не резиновая). Прошу прощения - не смог пройти мимо, конец оффтопа. ))