Mercurial > p > roundup > code
view website/www/_templates/layout.html @ 8040:19cef1e285b0
fix: remove delay when using csv export actions.
The CSV file is written incrementally, so we can't determine the
Content-Length. When using HTTP/1.1, this causes a delay while the
browser waits for a timeout. Forcing the connection to close after
the CSV file is written removes the delay.
Ideally we should shift to chunked transfer encoding for these two
actions, but that is much more invasive and when posting a request for
CSV, it is unlikely that another request will be sent over the same
socket.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 18 Jun 2024 00:48:06 -0400 |
| parents | bd013590d8d6 |
| children | 7ac637506acf |
line wrap: on
line source
{% set script_files = ['_static/jquery.js', '_static/doctools.js', '_static/language_data.js', '_static/searchtools.js', '_static/sphinx_highlight.js'] %} <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> {%- if builder != 'htmlhelp' %} {%- set titlesuffix = docstitle|e %} {%- set titlesuffix = " - " + titlesuffix %} {%- endif %} <title>{{ title|striptags }}{{ titlesuffix }}</title> {%- if builder != 'htmlhelp' %} <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '{{ pathto("", 1) }}', VERSION: '{{ release|e }}', COLLAPSE_MODINDEX: false, FILE_SUFFIX: '{{ file_suffix }}' }; </script> {%- if pagename == 'search' %} {%- for scriptfile in script_files %} <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script> {%- endfor %} <script type="text/javascript">$('#searchbox').show(0);</script> {%- endif %} {%- if builder == 'web' %} <link rel="stylesheet" href="{{ pathto('index') }}?do=stylesheet{% if in_admin_panel %}&admin=yes{% endif %}" type="text/css" /> {%- for link, type, title in page_links %} <link rel="alternate" type="{{ type|e(true) }}" title="{{ title|e(true) }}" href="{{ link|e(true) }}" /> {%- endfor %} {%- else %} <link rel="stylesheet" href="{{ pathto('_static/style.css', 1) }}" type="text/css" /> {%- endif %} <!-- https://github.com/sphinx-doc/sphinx/issues/11699 means a duplicate viewport tag --> {{ metatags }} {%- if 'name="description"' not in metatags %} <meta name="description" content="Page {{ pagename }} in documentation on the Roundup issue tracker, version {{ release|e }}."> {%- endif %} {%- if pageurl %} <link rel="canonical" href="{{ pageurl|e }}" /> {%- endif %} {%- if use_opensearch %} <link rel="search" type="application/opensearchdescription+xml" title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" href="{{ pathto('_static/opensearch.xml', 1) }}"/> {%- endif %} {%- if favicon %} <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/> {%- endif %} {%- endif %} {%- block linktags %} {%- if hasdoc('about') %} <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" /> {%- endif %} <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" /> <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" /> {%- if hasdoc('copyright') %} <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" /> {%- endif %} <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" /> {%- if parents %} <link rel="up" title="{{ parents[-1].title|striptags }}" href="{{ parents[-1].link|e }}" /> {%- endif %} {%- if next %} <link rel="next" title="{{ next.title|striptags }}" href="{{ next.link|e }}" /> {%- endif %} {%- if prev %} <link rel="prev" title="{{ prev.title|striptags }}" href="{{ prev.link|e }}" /> {%- endif %} {%- endblock %} </head> <body> <div id="skiplink"><a href="#main">Skip to main content</a></div> <header class="header"> <div class="label non_mobile">Roundup</div> <div class="label mobile"><a href="#main">Roundup <span class="jumplabel">jump to {{ title|e }}</span></a></div> {%- if pagename != "search" %} <div id="searchbox" style="display: none"> <form class="search" action="{{ pathto('search') }}" method="get"> <input type="text" aria-label="Enter search terms" name="q" size="18" autocomplete="on" /> <input type="submit" value="{{ _('Search') }}" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> {%- endif %} </header> <div class="navigation"> <nav aria-label="primary navigation"> <div class="menu"> {{ toctree() }} </div> </nav> </div> <div class="content"> <nav id="subnav" aria-label="sub navigation"> {%- if prev %} <a title="{{ prev.title|striptags }}" href="{{ prev.link|e }}"> Prev</a> {%- endif %} {%- if next %} <a title="{{ next.title|striptags }}" href="{{ next.link|e }}"> Next</a> {%- endif %} <a title="{{ _('Index') }}" href="{{ pathto('genindex') }}"> Index</a> </nav> <main id="main" role="main" tabindex="-1"> {% block body %} {% endblock %} </main> </div> {%- block footer %} <footer class="footer"> <div> {%- if show_source and has_source and sourcename %} <span class="source">[<a href="{{ pathto('_sources/' + sourcename, true)|e }}" rel="nofollow">{{ _('page source') }}</a>]</span> {%- endif %} {%- if hasdoc('copyright') %} {% trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %} {%- else %} {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} {%- endif %} </div> <div> {%- if last_updated %} {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %} {%- endif %} <span>Hosted by <a href="https://sourceforge.net"><img src="https://sflogo.sourceforge.net/sflogo.php?group_id=31577&type=1" width="88" height="31" alt="SourceForge.net Logo" /></a></span> </div> </footer> {%- endblock %} <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" /> {%- for cssfile in css_files %} <!-- loading css_files --> <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" /> {%- endfor %} <script> /* locally hosted goatcounter https://www.goatcounter.com/ */ /* include site info in path url to allow multiple sites to be tracked together */ window.goatcounter = { path: function(p) { return location.host + p } } </script> <script data-goatcounter="https://stats.rouilj.dynamic-dns.net/count" integrity="sha384-QGgNMMRFTi8ul5kHJ+vXysPe8gySvSA/Y3rpXZiRLzKPIw8CWY+a3ObKmQsyDr+a" async="" src="{{ pathto('_static/goatcounter_count.v3.js', 1) }}"> </script> <script id="documentation_options" data-url_root="{{ url_root }}" src="{{ pathto('_static/documentation_options.js', 1) }}"> </script> {%- if pagename != 'search' %} {%- for scriptfile in script_files %} <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script> {%- endfor %} <script type="text/javascript">$('#searchbox').show(0);</script> {%- endif %} {%- block extrahead %} {% endblock %} </body> </html>
