javascript twitter-bootstrap bootstrap-table

javascript - Las opciones de exportación de Bootstrap funcionan para 5,000 filas y fallaron para 16,000 filas con falla de red



twitter-bootstrap bootstrap-table (2)

A continuación se muestra el html que tiene 5,000 registros. La exportación está funcionando perfectamente bien. Sin embargo, cuando los registros aumentan a 16,000, se dice que hay una falla en la red para todas las exportaciones. En la consola no se encuentra ningún error. No estoy seguro de la razón. Probado en cromo.

<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>

Con> 15,000 registros

<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>


Esto parece ser un problema con la caducidad de la solicitud 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>


Intenta hacer lo siguiente:

1.) Descargue los archivos de la biblioteca en lugar de usar un CDN.

2.) Aumente el tiempo de espera de su página en su servidor de AWS. Es posible que no tengas suficiente tiempo para procesar todos esos registros.

3.) Es posible que te encuentres con alguna restricción desconocida del lado del cliente, como javascript.options.mem.max de 128 MB. (16k registros pueden golpear eso.)

4.) Probar otro servidor. Es posible que haya restricciones en AWS que no puede controlar (por ejemplo, la memoria o el "tiempo de vida" para su conexión), pero si configura su propio servidor dedicado personal para las pruebas, puede descartarlo.

5.) Deshabilita tu opción "TODO". ¿De verdad quieres que la gente saque discos de 16k a la vez?

6.) Como último recurso, intente crear un script de paginación del lado del servidor.