【发布时间】:2018-07-03 16:22:17
【问题描述】:
假设我们有一个在 Django 中发出的请求,它呈现 my_template.html 和 {foo: bar} 的上下文
return render(request, "my_template.html", {foo: bar})
现在基于用户活动 foo 和 bar 的变化。假设用户提出了他的第一个请求。 Django 将根据用户活动返回模板和相应的{foo: bar}。假设用户使用不同的活动发出了第二个请求。
Django 会从服务器发送my_template.html 到浏览器还是只发送更改后的context 到浏览器?模板是否缓存在浏览器中?
案例一:
如果模板被缓存在浏览器中,如果部署了一些更改的代码,它会反映在客户端的浏览器中吗?这是否适用于比较两个模板的 md5 哈希(如果它们不同步,然后从 Django 服务器下载模板)?
案例2
如果每次请求都渲染模板,那是否意味着带宽使用不乐观?
我读到,在节点和角度中,javascript 包被缓存在客户端浏览器中,并且只有数据(context {foo: bar})调用被发送到服务器,因此带宽使用更好,加载速度更快,这是真的。
【问题讨论】:
-
Django 模板在服务器上呈现,并为每个请求发送一个完整的页面。但是即使使用服务器端渲染,也有一些方法可以缓存。 docs.djangoproject.com/en/2.0/topics/cache/#downstream-caches
-
带宽很便宜。除非您有真正充分的理由预先优化带宽,否则最好花时间优化开发人员的生产力和应用程序稳定性。如果它需要你 3 倍的时间,并且一直跌倒,那么每个请求都减少 5kb 是没有意义的。当您真正知道热路径在哪里时,您可以随时逐步添加 Angular/Vue/FrameworkXYZ。
-
当我指的是带宽时,我指的是在客户端和服务器之间传输的数据,这在互联网连接缓慢时很重要
-
@saitejapakalapati “带宽”不是指传输的数据,而是指数据传输的速度。您所说的“带宽”是托管服务提供商推广的误称。
标签: python node.js django angular