Hi guys,
we’re developing a small dash application running on Azure and have some problems with slow rendering.
In our app we want to display a list of items with some meta information. The list is loaded in real-time from our database after clicking a button in out app.
Showing only some list items (0-40) everything works fine. Showing more than around 50 items the page refresh becomes slow. With more than 80-100 items the page is unusable.
Debugging our app we see that the callback itself is fast enough.
The list items look like the following
Row(children=[Col(children=FormGroup(children=[Checkbox(id={'role': 'leading-business-partner-checkbox', 'index': 'k-odr100114'}, checked=False, className='custom-control-input', disabled=False), Label(children='', className='form-check-label custom-control-label big-checkbox ml-5 mt-1', html_for='{"index":"k-odr100114","role":"leading-business-partner-checkbox"}')], className='custom-control custom-checkbox'), className='bg-light', width=1), Col(Row(children=[Col(children=[Div(B(children='k-xyz', id={'role': 'business-partner-id-label', 'index': 'k-xyz'})), Div(children='Related:', id={'role': 'assign-major-item-for-duplicate-label', 'index': 'k-odr100114'}), Dropdown(id={'role': 'assign-major-item-for-duplicate', 'index': 'k-xyz'}, disabled=False, options=[{'label': 'd-z', 'value': 'd-z'}, {'label': 'd-z', 'value': 'd-z'}, {'label': 'k-xyz', 'value': 'k-xyz'}])], align='center', width=2), Col(children=[Div(B('dummy ag')), Div(B('')), Div(B('')), Div(B('')), Div('dummy'), Div(['12345', ' ', 'dummy'])], align='center', width=4), Col(children=[Div([B('IBAN: '), 'dummy']), Div([B('USt-ID: '), 'dummy'])], align='center', width=3), Col(children=[FormGroup(children=Checklist(id={'role': 'business_partner_options', 'index': 'k-xyz'}, options=[{'label': 'Direkter Ansprechpartner', 'value': 'is_direct_contact', 'disabled': False}, {'label': 'Bankinformationen übernehmen', 'value': 'keep_finance_information', 'disabled': False}, {'label': 'Umsatzsteuer-ID übernehmen', 'value': 'keep_sales_tax_information', 'disabled': False}], value=[]), className='mb-1 mt-1')], align='center', width=3)], id='business_partner_meta_data', className='pt-2 pb-2')), Col(children=Button(children='Cluster ändern', id={'role': 'change-cluster-btn', 'index': 'k-xyz'}, disabled=False, style={'display': 'none'}), width=1)], align='center', className='mb-2 border border-primary rounded large-font-size')
(We use dash-bootstrap-components
for generating this html)
In our most problematic case we want to display a list of 260 (!) of these html-items. This seems to be far too much for the renderer.
Is there any possibility to debug the dash renderer?
Do you see any possibility to speed up the renderer?
Is the renderer really the problem?
Thanks in advance!