我在获取文档时查看Alfresco的日志,我可以看到每次尝试检索相同的文档(相同的ID)时,都会向远程存储库发出GET请求。
我在几次调用session.getDefaultContext().setCacheEnabled(true)
之前运行了一个明确调用session.getObject(id)
的测试。似乎缓存被忽略,因为每次都会发出GET命令。
您认为我可能会在会话中设置其他属性吗?或者也许是Alfresco的一些xml配置?
由于
答案 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内容?