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



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

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

您是否认为可能应该在我缺少的会话上设置其他属性?或者也许是Alfresco的一些xml配置?

谢谢

这取决于您用于检索文档的文档 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"部分)作为缓存键。如果您使用的是第二种格式,您将永远不会受到缓存命中,并且客户端必须再次向存储库询问文档数据。

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

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

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

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

相关内容

  • 没有找到相关文章