我有一个搜索结果页面的模板,一般看起来像这样:
{% for result in results %}
// single result template
{% endfor %}
据我了解,当用户从浏览器请求此页面时,模板在服务器端呈现,然后 html 传输给用户。在我看来,可以通过仅发送带有值的 JSON 并在客户端获取最终的 html 来减少流量。利润是由于没有为每个模板发送相同的 html-core。
那有意义吗?这种优化有什么通用的解决方案吗?非常感谢。
我有一个搜索结果页面的模板,一般看起来像这样:
{% for result in results %}
// single result template
{% endfor %}
据我了解,当用户从浏览器请求此页面时,模板在服务器端呈现,然后 html 传输给用户。在我看来,可以通过仅发送带有值的 JSON 并在客户端获取最终的 html 来减少流量。利润是由于没有为每个模板发送相同的 html-core。
那有意义吗?这种优化有什么通用的解决方案吗?非常感谢。
是的,有,但不是作为 Django 的一部分。Ember.js和AngularJs等框架在Javacript中执行此操作。这两者都是运行客户端的完整模型视图控制器框架。最终,服务器端可以简单地简化为将 json 传输到客户端的 REST 接口。
这是一个极端的例子,我相信 Ember.js 可以很容易地与您网站的一小部分集成,这可能是您正在寻找与 django 一起使用的内容。
如果 django 使用缓存中间件,那么对于大多数站点来说它应该不会太低效,因为缓存只会在数据更改时更新,尽管生成动态搜索结果是一个很好的例子,当这不是真的时。
django 模板系统非常高效。与大多数 Web 框架一样,在大多数情况下,在服务器上执行搜索时,服务请求所花费的大部分时间将用于查询数据库,尤其是在使用纯文本搜索时。因此,以模板渲染的形式优化服务请求的最后一步,在大多数情况下可能不是值得的优化。
话虽如此,许多网站确实执行客户端渲染,并且它目前是框架开发的一个活跃领域。