<div dir="ltr">Hi all,<div><br></div><div>Been reading @igrigorik's posts <a href="https://www.igvita.com/archives/" target="_blank">https://www.igvita.com/archives/</a> </div><div><br></div><div>I found that flush response as early as possible is crucial for a website performance.</div>


<div><br></div><div>I wanna make Time To First Byte (TTTFB) happen as early as possible with a Jinja2 site, </div><div><br></div><div>Suppose a typical Jinja2 template:</div><div><br></div><div><html><head></div>


<div>  <title>{{ site_title }}</title></div><div></head><body></div><div><ul></div><div>{% for item in items %}</div><div>  <li>item</li></div><div>{% endfor %}</div></ul><div>


</body></html></div><div><br></div><div>Let's presume site_title is static and known in view function from the start, I wanna flush everything before <body> to the client as early as possible, then items was a query from db, it's kinda slower, let's flush the everything below  <body> later in a second TCP packet.</div>


<div><br></div><div>This looks like impossible at the moment. I searched the Jinja2 docs, the closest thing I've found is the streaming template API<br></div><div><br></div><div>jinja2.Template('Hello {{ name }}!').stream(name='foo')<br>


</div><div><br></div><div>Which still requires all variables to be ready before rendering.</div><div><br></div><div>Is there a way to stream partial template results with partial template variables? This would be great help making faster websites. Other template engine than Jinja2 is welcome as long as it's in python! Thanks in advance!</div>

</div>