Обновление jstree после успешного события переименования (может, WCF и / или проблема с кэшированием?) - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть jstree, который загружает данные из БД через службу WCF с использованием JSON.

Мне удалось получить пункт контекстного меню jstree rename для работы, то есть: Я связал ajax-вызов с событием переименования jstree, поэтому, когда пользователь переименовывает узел, он сообщает методу WCF обновить базу данных («сохранить» новое имя).

Проблема:Если я перейду на другую страницу и вернусь позже, узел вернется к старому имени!

Похоже, что происходит какое-то кэширование, либо в jstree, либо в браузере, либоWCF, и дерево каким-то образом не обновляется.

Данные поступают из базы данных через метод службы WCF через JSON.При первом посещении страницы данные загружаются.Но когда вы вернетесь назад на страницу, это не так: точка останова в методе загрузки на стороне сервера никогда не будет достигнута.Мне кажется, что либо:

  • jstree кэшировал данные и не пытается загрузить их снова (но почему они не остаются переименованными?)

OR

  • jstree запрашивает службу, но WCF просто снова возвращает те же данные из кеша, а не запускает метод службы.

ИЛИ

  • Браузер кэширует запрос и возвращает тот же результат jstree без вызова метода WCF.

Любые идеи?Как я могу это проверить?

1 Ответ

1 голос
/ 17 декабря 2010

Поскольку вы не уверены, есть ли у вас проблемы с кэшированием, я предлагаю вам включить в метод WCF, который вы вызываете из jstree, следующую строку (например, в первой строке в теле метода):

WebOperationContext.Current.OutgoingResponse.Headers.Set (
    HttpResponseHeader.CacheControl,
    "max-age=0");

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

...