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

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

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

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

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

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

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

OR

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

OR

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

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


person MGOwen    schedule 14.12.2010    source источник


Ответы (1)


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

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

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

person Oleg    schedule 17.12.2010