Bootstrap 导出选项适用于 5,000 行,但因网络故障导致 16,000 行失败
Posted
技术标签:
【中文标题】Bootstrap 导出选项适用于 5,000 行,但因网络故障导致 16,000 行失败【英文标题】:Bootstrap export options works for 5,000 rows and failed for 16,000 rows with network failure 【发布时间】:2018-02-09 16:28:27 【问题描述】:以下是包含 5,000 条记录的 html。导出工作正常。然而,当记录增加到 16,000 条时,它表示所有出口都出现了网络故障。在控制台中没有发现错误。我不确定原因。在 Chrome 中测试。
<html>
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/extensions/export/bootstrap-table-export.min.js"></script>
</head>
<body>
<table data-toggle="table" data-search="true" data-show-refresh="true" data-show-toggle="true" data-show-columns="true" data-show-export="true" data-minimum-count-columns="2" data-show-pagination-switch="true" data-pagination="true" data-id-field="id"
data-page-list="[10, 25, 50, 100, ALL]" data-show-footer="false" data-side-pagination="client" data-url="https://jsonplaceholder.typicode.com/photos">
<thead>
<tr>
<th data-field="id">Id</th>
<th data-field="title">Title</th>
<th data-field="url">URL</th>
<th data-field="thumbnailUrl">Thumbnail URL</th>
</tr>
</thead>
</body>
</html>
拥有 > 15,000 条记录
<html>
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/extensions/export/bootstrap-table-export.min.js"></script>
</head>
<body>
<table data-toggle="table" data-search="true" data-show-refresh="true" data-show-toggle="true" data-show-columns="true" data-show-export="true" data-minimum-count-columns="2" data-show-pagination-switch="true" data-pagination="true" data-id-field="id"
data-page-list="[10, 25, 50, 100, ALL]" data-show-footer="false" data-side-pagination="client" data-url="https://fd-files-production.s3.amazonaws.com/226483/16h4Vwxe1Wz9PZ5Gublomg?X-Amz-Expires=300&X-Amz-Date=20170906T130107Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIA2QBI5WP5HA3ZEA/20170906/us-east-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=5d705bfd19579c8a93ff81ee076363b2f36d1f5e4540b85f7c86de7643c17055">
<thead>
<tr>
<th data-field="id">Id</th>
<th data-field="title">Title</th>
<th data-field="url">URL</th>
<th data-field="thumbnailUrl">Thumbnail URL</th>
</tr>
</thead>
</body>
</html>
【问题讨论】:
查看***.com/questions/19401638/… 这似乎缺少问题中的内容。例如,您是什么意思 Bootstrap 导出选项?你在说什么记录?我只看到一些加载了一些 CSS 和 javascript 的 HTML 以及一个空的 HTML 表。 我在 chrome 和 firefox 上看到了这个,看起来不错。无法重现问题 @Kathir 由 您 提供重现问题的条件。不由读者来填空。 @Kathir 您的 > 15,000 示例的服务器响应 403(禁止)状态代码。 【参考方案1】:尝试执行以下操作:
1.) 下载库文件而不是使用 CDN。
2.) 增加您在 AWS 服务器上的页面超时时间。您可能没有足够的时间来处理所有这些记录。
3.) 您可能遇到了一些未知的客户端限制,例如 javascript.options.mem.max 为 128MB。 (可能会达到 16k 条记录。)
4.) 尝试另一台服务器。 AWS 上可能存在您无法控制的限制(例如内存或连接的“生存时间”),但如果您设置自己的个人专用服务器进行测试,则可以排除这种情况。
5.) 禁用“全部”选项。您真的希望人们一次提取 16k 条记录吗?
6.) 作为最后的手段,尝试制作服务器端分页脚本。
【讨论】:
【参考方案2】:这看起来是 S3 请求过期的问题:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<X-Amz-Expires>300</X-Amz-Expires>
<Expires>2017-09-06T13:06:07Z</Expires>
<ServerTime>2018-06-02T00:00:15Z</ServerTime>
<RequestId>396C37F87B33C933</RequestId>
<HostId>pg4uY75WW5p07yvAtqhEFvvKi0FreyHlNo/gJ329aRYHP9/KgzkVxRVkH4lZkwPtw7bLET+HPl8=</HostId>
</Error>
【讨论】:
这看起来很有道理。如果有 15k 条记录,肯定会遇到 300 毫秒超时。以上是关于Bootstrap 导出选项适用于 5,000 行,但因网络故障导致 16,000 行失败的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ag-grid 导出到具有 Angular 6 的大数据(50,000 行)的 excel 功能(内存不足错误)?