【发布时间】:2016-08-10 01:06:20
【问题描述】:
为了避免 XY 问题/混乱,我先说我的问题,然后说我想如何解决它:
目前我正在构建一个应用程序来检索 Sharepoint 文件。该应用程序的第一个版本正在检索 URL(我知道具有给定输入的 url)并下载流,这非常快! 不幸的是,要拥有多个版本的共享点文件,我们必须将文件名重命名为时间戳,并且程序必须搜索元数据。找到文件后,我知道 URL 和下载流。
到目前为止一切顺利,我有一个工作示例,我确实得到了一个流。但问题是它需要 44 秒才能完成。 问题出在:
clientContext.ExecuteQuery();
使用以下 CAML 查询:
<Query>
<Where>
<And>
<And>
<Eq>
<FieldRef Name='Shipment' />
<Value Type='Number'>766956</Value>
</Eq>
<Eq>
<FieldRef Name='Loadunit' />
<Value Type='Number'>389254</Value>
</Eq>
</And>
<Eq>
<FieldRef Name='Doc_type' />
<Value Type='Text'>POD</Value>
</Eq>
</And>
</Where>
</Query>
为了更好的可读性,我用制表符等格式化了这个查询块。正如我所提到的:查询有效,没有错误。
Sharepoint (2013) 库有 50 000 个项目(并且每天都在增加)。 列表“Shipment”和“LoadUnit”已编入索引。我在周末重新索引了整个内容,但没有运气。
我也遵循了一些提示,但其中许多已经完成或不需要:
- http://apmblog.dynatrace.com/2010/03/18/how-to-avoid-the-top-5-sharepoint-performance-mistakes/
- http://www.networkworld.com/article/2210265/tech-primers/10-steps-to-optimize-sharepoint-performance.html
我的最终解决方案是回到我的第一个想法,即在没有元数据部分且没有时间戳作为名称/URL 的情况下搜索 URL。但是将它与元数据一起使用会更好/更有条理。
PS:对于好奇的人:我在运输行业工作。我们必须为客户保存法律文件,因此我正在构建一个应用程序,它会自动将其提供给它要求的任何人。
【问题讨论】:
-
我看到您使用的是客户端对象模型,但您知道您的 SharePoint 实例是在本地还是云托管?如果是本地部署,您将有一些可用的服务器端开发选项,可以加快速度。
-
感谢您的回答。 Sharepoint 是本地的,但该程序将托管在另一台服务器上,由于许可证,我无法使用服务器端库。我正在尝试使用 REST-API 搜索元数据,并将根据我的发现保持此线程的最新状态..
标签: c# sharepoint sharepoint-2013 caml