Параметры поиска - PullRequest
       1

Параметры поиска

3 голосов
/ 14 июля 2010

У меня есть форма подробного поиска на стартовой странице, где у пользователя есть много вариантов поиска.

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

  • URL
  • Session
  • Cookie

Что следует использовать в качестве передового опыта.

Ответы [ 3 ]

1 голос
/ 14 июля 2010

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

С помощью куки вы можете хранить много данных (ну, в пределах разумного), и это не влияет на ваши URL.

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

1 голос
/ 14 июля 2010

Лучшая практика действительно зависит от сценария (включая бизнес-кейс, язык программирования и т. Д.). Тем не менее, вот некоторые плюсы / минусы высокого уровня.

URL Pros : легко читать / писать
URL Минусы : пользователь может легко манипулировать ими, вызывая непредвиденные результаты, неприятные URL

Плюсы сеанса : должно быть довольно легко читать / писать программно (в зависимости от языка), не нужно беспокоиться о параметрах в URL
Session cons : занимает больше памяти (может быть незначительным в зависимости от данных)

Печенье профи : не занимает память
Минусы cookie : должны читать / записывать в файл, пользователь может удалить куки в любое время (в середине сеанса), куки, совместно используемые в браузере (1 куки для любого количества сеансов)

0 голосов
/ 14 июля 2010

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

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

Проблема заключается в том, что при использовании толькоcookie, у вас не будет веб-разговоров , у вас есть глобальный cookie, который используется всеми вкладками / окнами в браузере.Если пользователь откроет новую вкладку и начнет новый поиск, cookie сеанса будет заменен, а сеанс на другой вкладке будет потерян.

Так что вы либо:

  • Пропуститеидентификатор сеанса в URL-адресе вместо использования файла cookie (однако остерегайтесь фиксации сеанса).
  • Включите дополнительный параметр GET или скрытое поле, которое идентифицирует беседу.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...