У меня есть приложение, использующее ExtJS на внешнем интерфейсе и TurboGears на сервере. Теперь я начал добавлять куки для обработки лицевой стороны настройки с помощью диспетчера состояния CookieProvider. Это круто, но куки передаются при каждом вызове, и эти куки значительны. У меня есть опасения по поводу производительности ударил.

Если коротко, могу ли я заблокировать отправку определенных файлов cookie на звонки на сервер?

  • Дейв
3
dave 9 Июл 2010 в 20:50

4 ответа

Лучший ответ

Вот краткое изложение того, что я в итоге реализовал: Все настройки хранятся в базе данных. При переходе к экрану я читаю настройки экрана для текущего пользователя и использую его для инициализации простого поставщика состояния на основе памяти в процедуре init_component. Поставщик состояния прослушивает соответствующие события и обновляет состояние в памяти. Пользовательский интерфейс имеет меню настроек с опциями и сохранить / сбросить. Опция сохранения сохраняет состояние памяти на сервере. Сброс удаляет состояние из базы данных и восстанавливает экран с настройками по умолчанию. Кажется, это хорошо работает.

К вашему сведению: другие ошибки, которые я нашел:

  • сетки не имеют события для замены фильтра
  • У полей со списком (среди прочих) нет кода для сохранения состояния, вы должны написать свой собственный.
  • государство из сетки расточительно (первоначальная проблема)

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

0
dave 29 Ноя 2010 в 02:41

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

Ext.Ajax.Request({
    url: 'path/to/file.htm',
    params: {
        jsessionid:  Ext.util.Cookies.get('jsessionid')
    },
    success: function(result, request) {
        // Callback function for successful request
    }
});
0
dorgan 16 Июл 2010 в 20:58

Чтобы наше приложение на основе ExtJS работало без включенных файлов cookie (это означает, что каждый запрос от клиента, написанный на JS и использующий AJAX-запросы для связи с сервером на основе Java, будет создавать новый Session-ID и, следовательно, не может быть назначен какому-либо определенная сессия сервером), я разобрался с очень простым методом перезаписи AJAX-метода ExtJS и добавления идентификатора сессии к каждому запросу, что решает эту проблему. Я получил идею из другого потока, где было показано, как перезаписать Ext.Ajax для добавления определенного параметра к каждому вызову, и я использую этот способ для добавления идентификатора сеанса с добавлением "; jsessionid = 'к каждому параметру URL.

0
anurag18294 9 Июл 2010 в 16:58

Если вы знаете, что ваши пользователи используют современные браузеры, вы можете использовать HTML 5 Local Storage вместо куки.

Это именно то, для чего он предназначен - локально хранить такие данные, как настройка на клиенте.

Это освобождает вас от проблем с файлами cookie, таких как отправка на сервер и ограничение по размеру.

1
ob1 10 Июл 2010 в 18:07