Вопрос архитектуры, включающий поиск и состояние сеанса - PullRequest
1 голос
/ 10 марта 2009

У меня есть сетка с несколькими тысячами строк, которые можно отфильтровать и отсортировать. В каждой строке вы можете нажать кнопку «Подробности», которая откроет вам новую страницу с подробной информацией о странице. Поскольку это кнопка, вы не можете щелкнуть средней кнопкой мыши или щелкнуть правой кнопкой мыши и открыть в новой вкладке. Кроме того, при нажатии назад вы теряете фильтры и результаты поиска.

Чтобы решить эту проблему, я подумал о следующем: переключайте кнопки на ссылки, а при фильтрации и поиске используйте get вместо отправки запросов. Таким образом, вы можете переключаться на новые страницы с помощью щелчка правой или средней кнопки мыши, и если вы все же переходите по ссылке в обычном режиме, обратная связь будет работать правильно.

Однако это изменение не было сделано. Нас попросили добавить набор кнопок «следующий результат / предыдущий результат» на странице сведений, который позволит вам перемещаться. Хотя это и не элегантное решение, оно, по крайней мере, сработает.

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

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

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

Какое лучшее решение?

1 Ответ

2 голосов
/ 10 марта 2009

Сессия не звучит как победитель, не будет масштабироваться с большим количеством пользователей.

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

Если вы используете строки запросов, вы можете кэшировать страницы по параметру.

Как насчет некоторого кода AJAX на этой кнопке для извлечения деталей - оставьте основную сетку на месте и отобразите детали в div / панели или в новом окне / вкладке.

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