2014-01-27 2 views
0

Привет, Мне нужен совет. У меня есть две таблицы: состояния и округа, каждое государство может иметь один или несколько округов. У меня есть два раскрывающихся меню для штатов, а другое для округов. Каждый раз, когда пользователь выбирает состояние, выполняется запрос ajax, запрашивает базу данных и ищет соответствующие округа этого состояния. Пользователь также может добавлять больше округов, если они не находятся в базе данных.Сохранить список штатов и округов в сеансе или нет

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

Как вы думаете, это хорошая идея, чтобы сохранить это в сеансе или запросить базу данных несколько раз? Я также открыт для других решений. Thanks

+2

Не храните эту информацию на СЕССИИ, храните ее в базе данных. –

ответ

2

Если база данных правильно проиндексирована, не должно быть необходимости в этом.

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

+0

Итак, если таблицы правильно проиндексированы, нет необходимости использовать кеш? –

+0

@Jorge * в этом конкретном случае, * да. Нет смысла хранить список в сеансе. В других сценариях отдельный слой кэширования может иметь смысл. –

+0

Это то, чему вы не учитесь в школе, спасибо –

1

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

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

+0

нет, это не то, как работают сеансы. вы, кажется, запутываете сессии с помощью куки-файлов –

+0

извините, пересмотрены! – StringsOnFire

Смежные вопросы