Кэш Сессия VS cookie VS?

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

Вы также сможете просматривать поток событий в режиме Liveview, переключаясь на вкладку пользовательских событий. Данные о Liveview не сохраняются и полезны для целей разработки.

Если у вас есть дополнительные вопросы, вы можете написать по адресу Integration@branch.io.

61
задан numaroth 25 May 2017 в 21:22
поделиться

5 ответов

Управление состоянием является критической вещью освоить при прибытии в веб-мир с точки зрения настольного приложения.

  • Session используется для хранения в расчете на пользователя информация для текущей веб-сессии на сервер . Это поддерживает использование сервера базы данных как хранилище бэкенда.
  • Cookie должен использоваться для хранения в расчете на пользователя информация для текущей веб-сессии или персистентный информация о клиент , поэтому клиент управляет содержанием cookie.
  • Cache объект совместно использован пользователями в единственном приложении . Его основная цель к данным кэша от хранилища данных и не должна использоваться в качестве основной памяти. Это поддерживает автоматическое аннулирование функции.
  • Application объект совместно используется пользователями для хранения всего приложения состояние и должен использоваться соответственно.

, Если Ваше приложение используется многими неаутентифицируемыми пользователями, я предлагаю, чтобы Вы хранили данные в cookie. Если это требует аутентификации, можно или хранить данные в DB вручную или использовать функции управления профилем ASP.NET.

84
ответ дан Mehrdad Afshari 24 November 2019 в 17:20
поделиться

Сеть по своей природе разъединяется модель, и ни одна из упомянутых опций (Сессия, Приложение, Кэш...) не достаточно надежна. Сессия будет тайм-аут, рабочий процесс перерабатывает, и т.д.

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

Просто удостоверяются, что идентификатор шифруется и затем base64 закодированная строка и не только числовое значение.

РЕДАКТИРОВАНИЕ:

После Вашего дополнительного объяснения в исходном вопросе и комментарии от Mehrdad Afshari, хорошее решение для Вас состояло бы в том, чтобы использовать Сессию, но установить устройство хранения данных на SQL-сервер вместо InProc.

Вот больше деталей и инструкций, как настроить его: http://msdn.microsoft.com/en-us/library/ms178586.aspx

Имеет в виду это, у Вас ВСЕ ЕЩЕ будут тайм-ауты сессии, но они выживут, пул приложений перерабатывает, даже перезапуски сервера.

, Если Вам действительно нужны постоянное хранение, настраиваемое решение с базой данных, поскольку я первоначально обрисовал в общих чертах, единственное решение.

4
ответ дан markom 24 November 2019 в 17:20
поделиться

Вы не должны использовать объект Кэша кэшировать данные сессии, поскольку кэш совместно используется всеми пользователями. Вместо этого Вы могли использовать Asp. Сетевые свойства Profile , чтобы хранить Ваши данные или Вы могли добавить обработчик событий к событию Session_End и хранить данные, если пользователь оставляет компьютер слишком долго.

1
ответ дан Rune Grimstad 24 November 2019 в 17:20
поделиться

Сессия хранится на сервере, испытает таймаут по умолчанию через 20 минут (Это является корректируемым). Я сохранил бы это в cookie, или в состоянии отображения (при наличии) для предотвращения тайм-аута.

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

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

Редактирование (добавляющее разъяснение на основе ответа от автора вопроса):

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

Так да, наборы данных могут быть сохранены в Состоянии отображения.

2
ответ дан Chris Ballance 24 November 2019 в 17:20
поделиться

Первая вещь необходимо знать! cookie используются сессией ! Сервер знает, кто Ваш пользователь благодаря cookie, которым обмениваются между клиентом и сервером каждый запрос (это работает с cookie набора HTTP-заголовков и cookie).

реальный вопрос:

  • , Если Вы хотите хранить пользовательскую информацию во время навигации, затем необходимо использовать сессию.

  • , Если Ваш клиент не поддерживает cookie, то можно решить сохранить cookie в каждом запросе, закодированном в URL (сервер будет использовать URL вместо cookie для нахождения правильной сессии для запроса).

Затем рассматривают, где Вы хотите сохранить свою сессию:
, Если Ваш сайт должен иметь высокий disponibility и высокую производительность, то Вы не должны хранить сессию в процессе, но в базе данных. Таким образом, Вы сможете совместно использовать работу среди нескольких веб-серверов. Но Вы освободите в простоте (потому что объекты, которые Вы храните на своей сессии, должны быть сериализуемыми), и у Вас есть еще одно распространение в прямом и обратном направлениях между Вашим веб-сервером и Вашим сервером базы данных.

1
ответ дан Lewis86 24 November 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: