【问题标题】:Refreshing jstree after successful rename event (maybe WCF and or caching problem?)成功重命名事件后刷新 jstree(可能是 WCF 和/或缓存问题?)
【发布时间】:2010-12-14 02:35:19
【问题描述】:

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

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

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

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

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

  • jstree 已缓存数据,不再尝试加载(但为什么不保持重命名?)

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

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

有什么想法吗?我该如何检查?

【问题讨论】:

    标签: wcf json jquery jstree


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2014-01-24
      • 2012-10-29
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2016-01-05
      相关资源
      最近更新 更多