我正在使用django
开发一个网站。该网站的页面渲染时间超过1秒。我想像Google一样逐步加载此页面。 Google首先加载输入,然后过一会加载搜索结果。像这样:
我使用StreamingHttpResponse
(描述为here)逐步加载页面。我的views.py
在这里:
import time
from django.http.response import StreamingHttpResponse
class TestStreamingLoading(View):
def get(self, request):
response = StreamingHttpResponse(streaming_content=self.generate_stream_response())
return response
def generate_stream_response(self):
yield 'data1 '
time.sleep(4)
yield 'data2'
我的问题是,在下载整个页面之前,浏览器无法呈现任何内容。浏览器在4秒钟之前什么都没有显示,之后显示data1 data2
。但是我想在开始时显示data1
,在4秒后显示data1 data2
。我该怎么办?
原因可能是gzip
中间件。 gzip
编码将内容分成一些块,因此它等待完成一个块,然后压缩并发送该块。如果要加载流式页面,则应使用brotli
编码的django中间件。 Google已将brotli
载入流式页面。更多信息是brotli
。