启用了客户端缓存,但在Alfresco上忽略了

时间:2013-10-14 16:28:46

标签: alfresco alfresco-share cmis opencmis

我在获取文档时查看Alfresco的日志,我可以看到每次尝试检索相同的文档(相同的ID)时,都会向远程存储库发出GET请求。

我在几次调用session.getDefaultContext().setCacheEnabled(true)之前运行了一个明确调用session.getObject(id)的测试。似乎缓存被忽略,因为每次都会发出GET命令。

您认为我可能会在会话中设置其他属性吗?或者也许是Alfresco的一些xml配置?

由于

2 个答案:

答案 0 :(得分:2)

这取决于您用于检索文档的文档ID。 Alfresco CMIS文档ID如下所示(注意“; v.v”部分):

workspace://SpacesStore/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;v.v

Alfresco还接受看起来像节点ID的文档ID(注意缺少“; v.v”部分)来检索文档,但始终返回上面的格式。

workspace://SpacesStore/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

OpenCMIS缓存使用第一个文档ID格式(带有“; v.v”部分)作为缓存键。如果您使用的是第二种格式,则永远不会获得缓存命中,客户端必须再次向存储库询问文档数据。

答案 1 :(得分:0)

似乎适用于getObject,但是为了实际检索内容,不使用缓存:

Document document = (Document)session.getObject(id); document.getContentStream().getStream();

最后一行触发GET到alfresco_root/folder/content/doc_name?id=id;version

客户端缓存是否可以实际用于存储doc内容?