0

プロパティを読み取り、その値に基づいてjson応答を作成するという単純なことを行うウェブスクリプトが屋外にあります。別の Web スクリプトがこのプロパティの更新を担当しています。ただし、元のスクリプトからの応答がキャッシュされる場合があり、すべてのクライアントに対してではありません。

したがって、1 つのクライアントについては現在のステータスを取得し、もう 1 つのクライアントについては以前の状態を取得します。

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 が最初にドキュメントにアクセスしたとき、ステータスは「something」に設定されていました。彼は「FirstResponse」を取得し、ウェブスクリプトでそれを変更しました。

  1. その後、再度ドキュメントを取得すると、2 番目の応答が返されます。

  2. しかし、2 番目のクライアントがこの同じノードにアクセスして応答を要求すると、最初の応答が得られます。さらに、その prop を読み取ろうとすると、「古い」prop が返されます。

したがって、2 つのクライアントからスクリプトを更新し、このプロパティを読み取ると、1 つのクライアントが 1 つの値を取得し、もう 1 つのクライアントが別の値を取得します。

私の唯一の推測 (これまでのところ) は、これはキャッシュの問題であるということです。では、キャッシングを防ぐにはどうすればよいでしょうか。そして、それはどこで起こりましたか?冬眠?ある種のリポジトリキャッシュ?それを取り除く方法は?

4

2 に答える 2

0

ここで問題が見つかりました。プロップは d:mltext として定義されていました。つまり、キャッシュされた情報ではなく、単なる多言語情報です。モデルを拡張し、多言語対応の新しいプロップを追加する必要がありました。現在、すべてのユーザーが同じ情報を持っています。

于 2011-01-06T09:52:03.983 に答える
0

http://wiki.alfresco.com/wiki/Web_Scripts#cacheを確認してください

于 2010-12-10T14:21:14.797 に答える