0

我有一个jstree使用 JSON 通过 WCF 服务从数据库加载它的数据。

我设法让 jstree 的重命名上下文菜单项“工作”,这意味着:我将 ajax 调用绑定到 jstree 重命名事件,因此当用户重命名节点时,它会告诉 WCF 方法更新数据库(以“保存”新名字)。

问题:如果我转到另一个页面然后稍后再回来,则节点已恢复为旧名称!

看起来在 jstree 或浏览器或 WCF 中正在进行某种缓存,并且树没有以某种方式刷新。

数据通过 JSON 上的 WCF 服务方法来自数据库。当您第一次访问该页面时,会加载数据。但是当你回到页面时,它不是:服务器端加载方法中的断点永远不会被命中。在我看来,要么:

  • jstree 已经缓存了数据并且不会尝试再次加载它(但为什么它不保持重命名?)

或者

  • jstree 询问服务,但 WCF 只是再次从缓存中提供相同的数据,而不是实际运行服务方法。

或者

  • 浏览器正在缓存请求并将相同的结果返回给 jstree,而无需调用 WCF 方法。

有任何想法吗?我怎样才能检查这个?

4

1 回答 1

1

因为您不确定是否有缓存问题,所以我建议您包含在您从jstree以下行调用的 WCF 方法中(例如,作为方法主体中的第一行):

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

它将跟随缓存重新验证。因此,可能也使用的 Web 浏览器或代理不会在服务器上未经重新验证(调用相同的 WCF 方法)的情况下使用缓存的数据版本。您还可以考虑使用其他缓存控制选项

于 2010-12-17T10:10:10.927 回答