Azure Blob列表分页

Azure Blob列表分页,azure,paging,azure-blob-storage,Azure,Paging,Azure Blob Storage,我的容器中有3000个文件。在我的gridview中,我显示了容器blob的列表,但3000太多,对性能不好(我的想法:) 我需要一个分页代码,例如,我的网格页面大小是50,我将在gridview中显示我的第一页容器中的前50个blob。当然,我需要在PageIndexchange中显示更多代码:) 或者它不会影响性能?根据您的描述,我建议您可以尝试使用azure storage SDK的方法来实现您的要求 ListBlobsSegmented inclue maxResults参数 最大结果:

我的容器中有3000个文件。在我的gridview中,我显示了容器blob的列表,但3000太多,对性能不好(我的想法:)

我需要一个分页代码,例如,我的网格页面大小是50,我将在gridview中显示我的第一页容器中的前50个blob。当然,我需要在PageIndexchange中显示更多代码:)


或者它不会影响性能?

根据您的描述,我建议您可以尝试使用azure storage SDK的方法来实现您的要求

ListBlobsSegmented inclue maxResults参数

最大结果: 一个非负整数值,指示一次要返回的结果的最大数目,最高每次操作的限制为5000。如果此值为null,则返回的结果数将达到最大可能数,最多可达5000

所以当你的页面第一次加载时,你可以搜索50条记录

当页面索引更改时,可以调用search方法根据gridview索引搜索正确数量的blob

注意:为了包含性能,我们不会一次获取所有blob以了解容器中有多少blob。所以我们无法知道BLOB的总数。我建议您可以在第一次搜索100个BLOB,如果客户单击第2页,它将搜索下100个BLOB

下面是一个示例演示,希望能给您一些提示: Gridview:

<asp:GridView ID="GridView1" AllowPaging="true" PageSize="50"  OnPageIndexChanging="GridView1_PageIndexChanging" runat="server">
 </asp:GridView>

我在用JAVA搜索分页示例,出于某种原因,google将这个问题列为前三名。无论如何,我找到了一个解决方案,如果有人对如何使用java和最新的MS azure客户端进行分页感兴趣,请点击这里

void listAllForContainer(BlobContainerClient container) {
    String token = null;
    do {
        PagedResponse<BlobItem> pr = container
                .listBlobs(options, token, Duration.ofSeconds(60))
                .iterableByPage()
                .iterator()
                .next();

        token = pr.getContinuationToken();
        List<BlobItem> pageItems = pr.getValue();
        pageItems.forEach(i->System.out.println(i.getName()));

    } while (token != null);
}
void listAllForContainer(BlobContainerClient容器){
字符串标记=null;
做{
PagedResponse pr=容器
.listBlobs(选项、令牌、持续时间秒(60))
.iterableByPage()
.iterator()
.next();
token=pr.getContinuationToken();
List pageItems=pr.getValue();
pageItems.forEach(i->System.out.println(i.getName());
}while(令牌!=null);
}
天蓝神器

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-storage-blob</artifactId>
        <version>12.X.X</version>
    </dependency>

com.azure
azure存储blob
12.X.X

你知道吗,你是国王:)非常感谢你,它正在工作:)当你有时间的时候,你能帮我把容器ListBlobsSegmented与SasUri分开吗。我得到列表没有问题,但是当用户刷新页面或5分钟后再来一个页面时。我总是得到与SasUri的uri链接,这对性能有害吗。?我有容器bloblist的viewstates,但我有1000个用户:)要使用SAS列出blob吗?请您详细解释一下“当用户刷新页面或5分钟后再来另一个页面时”?我建议你可以开始一个新的线程并发布更多的详细信息,这将使我们更容易找到解决方案。很抱歉写得太晚,我今天读了一篇博客,他们写道,当你创建一个用户容器sas uri的上传示例时,你不需要为另一个用户创建另一个容器sas uri(未过期).我以为你会为每个人创建一个新的容器sas uri。对吗?一件就足够了?SAS是通用的,任何拥有正确blob url和SAS令牌的人都可以访问blob而无需任何授权。
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-storage-blob</artifactId>
        <version>12.X.X</version>
    </dependency>