ASP.NET или PHP: полезен ли Memcached для хранения информации о состоянии пользователя? - PullRequest
0 голосов
/ 10 мая 2010

Этот вопрос может разоблачить мое невежество как веб-разработчика, но сейчас это не будет плохой вещью для меня, не так ли?

Мне нужно хранить информацию о состоянии пользователя. Примеры информации, которую мне нужно хранить для каждого пользователя. (определить пользователя: неаутентифицированный посетитель)

  1. Пользователь прибыл на сайт из Google / Bing / Yahoo
  2. Пользователь использовал функцию поиска (true / false)
  3. Список предыдущих посещенных страниц продукта за текущий визит

Насколько я понимаю, я мог бы сохранить это в состоянии просмотра, но это вызывает проблему с загрузкой страницы с точки зрения конечных пользователей, поскольку значительный объем информации, недоступной для просмотра, передается конечным пользователей, даже если сервер - единственная сторона, которой нужна информация.

На аналогичном замечании, насколько я понимаю, состояние сеанса может использоваться для хранения такой информации, но не приводит ли это также к тому, что та же информация передается пользователю и сохраняется в его файле cookie? (Не так плохо, как viewstate, но он не чувствует себя идеальным).

Это оставляет меня либо с системой хранения только для сервера, либо с решением для кэширования памяти.

Memcached - единственный хороший вариант здесь?

Ответы [ 2 ]

1 голос
/ 10 мая 2010

Элементы 1 и 2, по-видимому, регистрируют информацию - то есть нет очевидного требования ссылаться на них, если только вы не хотите сохранить их условия поиска. Так что просто записать это в журнал где-нибудь и забыть об этом?

Я мог бы сохранить это в состоянии просмотра

Я предполагаю, что это вещь asp.net - конечно, это ничего не значит для меня, поэтому я не могу комментировать.

Насколько я понимаю, состояние сеанса может использоваться для хранения такой информации

Да - это будет мой репозиторий для пункта 3.

не приводит ли это также к тому, что та же информация передается пользователю и сохраняется в его файле cookie?

Нет - сессионный cookie - это всего лишь дескриптор данных, хранящихся на стороне сервера в PHP (и всех других встречах с HTTP, которые я встречал).

Это оставляет меня либо с системой хранения только для сервера, либо с решением для кэширования памяти

memcache только для любого использования в качестве подложки для хранения сеанса.

Независимо от того, следует ли вам использовать memcache в качестве субстрата для хранения сеанса ... на одном сервере, здесь не так много преимуществ - хотя NT (IIRC) использует фиксированные размеры кэшей / буферов (тогда как Posix / Unix / Linux будет использовать вся доступная память) Я все еще ожидал бы, что большинство сеансов ввода-вывода будет в памяти, а не на диске, если ваш сайт не перегружен. Настоящее преимущество заключается в том, что вы используете кластер (но в этом сценарии вы можете рассмотреть что-то вроде Кассандры).

IME, сеансы не так уж велики, но если вы хотите хранить неопределенную историю активности в сеансе, то вам следует переполнить данные (или отделить их от) сеанса, чтобы предотвратить их слишком большое большой.

С

1 голос
/ 10 мая 2010

Memcached хорош для чтения / записи редко ключей / значений, это кеш, как следует из названия. например если вы предоставляете информацию о продукте, которая изменяется нечасто, вы сохраняете ее в memcached, чтобы не запрашивать базу данных повторно для полустатических данных. Вы должны использовать состояние сеанса для хранения вашей информации, единственное, что будет передано туда и обратно, это идентификатор сеанса, а не фактические данные, которые остаются на сервере.

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