0

我在露天有一个 webscript,它做了一些简单的事情:读取一个属性,并根据它的值创建一个 json 响应。另一个 webscript 负责更新此属性。但是,来自原始脚本的响应有时会被缓存,而不是针对所有客户端。

因此,对于一个客户,我获得当前状态,而对于另一个客户,我获得之前的状态。

webscript 基本上从节点读取属性(nodeRef 是在 webscript 请求中发送的):

var status = doc.properties["my:customProp"];
switch (status) {
  case "something":
     model.prop = "FirstResponse";
  break;
  case "somethingElse":
     model.prop = "SecondResponse";
  break;
  default:
     model.prop = "ThirdResponse";
}    

然后 freemarker 模板解析 prop 并为响应创建一个 json 输出。

现在,这应该简单明了。用例如下: 1. 当用户#1 首次访问文档时,状态设置为“某事”。他得到了一个“FirstResponse”,并用一个网页脚本改变了它。

  1. 当他再次拿到文件时,他得到了第二个回应。

  2. 但是,如果第二个客户端访问同一个节点并请求响应,它仍然会得到第一个响应,甚至更多,当我尝试读取该道具时,我会得到“旧”道具。

所以我从两个客户端刷新脚本并读取这个属性,一个客户端获得一个值,另一个获得另一个值。

我唯一的猜测(到目前为止)是这是一个缓存问题。那么,如何防止缓存呢?它发生在哪里?休眠?某种存储库缓存?如何摆脱它?

4

2 回答 2

0

检查http://wiki.alfresco.com/wiki/Web_Scripts#cache

于 2010-12-10T14:21:14.797 回答
0

嗯,这里发现了问题,prop被定义为d:mltext。所以它不是缓存信息,只是多语言信息。我不得不扩展模型并添加一个多语言的新道具,现在所有用户都有相同的信息。

于 2011-01-06T09:52:03.983 回答