Какой метод следует использовать для хранения сессии rails? Как решить? - PullRequest
2 голосов
/ 12 апреля 2011

Каков наилучший метод для хранения данных сеанса на рельсах? Очевидно, это зависит от ваших потребностей, но какие ключевые факторы влияют на принятие решения и каковы идеальные хранилища сессий для различных сценариев?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Безопасность должна быть проблемой. Помните, что все, что хранится на стороне клиента (например, файлы cookie, параметры формы POST, параметры GET и т. Д.), Можно изменить с помощью прокси-серверов браузера. Поэтому всегда проверяйте все, что возвращается через браузер. Вы также можете зашифровать значения в файлах cookie или сформировать параметры POST. Кроме того, как отметил Стив, куки-файлы обычно следует использовать только для небольших значений.

Метод, основанный на файлах по умолчанию, очень хорош, если вы не собираетесь работать на кластере серверов или если вы можете терпеть потерю пользовательских сессий, если сервер выходит из строя (им придется войдите в систему). Для подавляющего большинства приложений это вполне приемлемо. Вам необходимо настроить балансировщик нагрузки для «липких сессий», что означает, что данный пользователь привязан к одному серверу. Это может усложнить балансировку нагрузки, так как иногда вы обнаружите, что многие пользователи привязаны к одному серверу, а другой сервер находится в режиме ожидания.

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

Короче говоря, я бы сказал, что подход к хранилищу файловых сессий по умолчанию, вероятно, вполне приемлем для 90 +% приложений.

2 голосов
/ 12 апреля 2011

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

Файлы cookie не годятся для хранения больших объемов данных или данных, которые следует скрытьпользователь, но это просто означает, что вы не должны помещать такие вещи в сеанс.Обычно это не проблема, если вы помните об этом ограничении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...