繁体   English   中英

优化 CSOM 加载时间以从 SharePoint 树中获取所有文件

[英]Optimize CSOM loading time to get all files from SharePoint tree

所以我试图实现一个函数来从 SharePoint 树中获取每个文件。 除了加载时间外,该功能工作正常。

这是我所做的

    private List<ListItem> GetAllItems(ClientContext Context, List list, List<ListItem> ListItems, CamlQuery camlQuery)
        {
            camlQuery.ViewXml =
                    @"< View Scope = 'RecursiveAll'>
                        < Query >
                            <Where>
                          </Where>
                        </ Query >
                    </ View >";

            ListItemCollection AllItems = list.GetItems(camlQuery);
            Context.Load(AllItems);
            Context.ExecuteQuery();
            foreach (ListItem item in AllItems)
            {
                if (item.FileSystemObjectType == FileSystemObjectType.File)
                {
                    if (!ListItems.Contains(item))
                        ListItems.Add(item);
                }

                if (item.FileSystemObjectType == FileSystemObjectType.Folder)
                {
                    camlQuery.FolderServerRelativeUrl = item.FieldValues["FileRef"].ToString();
                    GetAllItems(Context, list, ListItems, camlQuery);
                }
            }

            return ListItems;
        }

问题是Context.ExecuteQuery(); 加载每个查询需要 0,3 - 1 秒,对于一棵树,我有 1424 个文件夹,加载时间超过 4 分钟,如果文件夹数量变大,时间会太长。

所以我想问一下是否有可能减少加载时间,或者是否有更优化的方式从 SharePoint 树中获取每个文件?

这是一篇关于优化CSOM代码的文章,供大家参考: https : //www.codeproject.com/Articles/738008/Programming-Efficiently-with-the-SharePoint-Client

大意:

  1. 只请求你想要的(但一次性请求你想要的一切!)
  2. 谨慎调用 ExecuteQuery
  3. 高级:并行和异步代码
  4. 在会话中缓存数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM