如何使用django逐步渲染具有多个部分的页面?

问题描述 投票:1回答:1

我正在使用django开发一个网站。该网站的页面渲染时间超过1秒。我想像Google一样逐步加载此页面。 Google首先加载输入,然后过一会加载搜索结果。像这样:

enter image description here

我使用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。我该怎么办?

django stream
1个回答
1
投票

原因可能是gzip中间件。 gzip编码将内容分成一些块,因此它等待完成一个块,然后压缩并发送该块。如果要加载流式页面,则应使用brotli编码的django中间件。 Google已将brotli载入流式页面。更多信息是brotli

© www.soinside.com 2019 - 2024. All rights reserved.