Как сохранить пользовательские настройки? Печенье становится больше - PullRequest
1 голос
/ 04 мая 2010

Мое приложение (Asp.Net MVC) прекрасно взаимодействует с пользовательским интерфейсом (jQuery / js). Например, настройка различных диаграмм поиска, перемещение гаджетов на экране и многое другое ... Конечно, я хочу сохранить все данные для каждого пользователя. Так что данные будут доступны с любой страницы в Dumaine, и пользователь примет их предпочтения.

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

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

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

У других проблемных файлов cookie есть ограничение по размеру. Это зависит от вашего браузера, но я определенно был близко к границе - мой cookie легко стал 4kb

Есть ли другое решение?

Ответы [ 2 ]

3 голосов
/ 04 мая 2010

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

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

РЕДАКТИРОВАТЬ 1: Подумав об этом, я думаю, что наличие явной кнопки «Сохранить настройки» было бы полезным и практичным.

Где-то на вашей странице, где пользователь редактирует вещи, которые генерируют куки, поместите кнопку с именем save, затем подключите обработчик щелчков jQuery. При щелчке создайте строку CSV или другой метод хранения настроек для отправки обратно на сервер, затем используйте $.post, чтобы отправить его обратно в метод действия в контроллере.

Оказавшись там, каким-то образом сохраните его в базе данных (до вас, как именно), затем верните массив JSON с атрибутом успеха, чтобы указать, было ли сохранение предпочтений успешным.

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

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

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

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