2

我在 Django 中有一个“半动态”视图。就我而言,它为首次访问者和回访者提供不同的内容。我知道我的视图可以在呈现响应之前运行各种逻辑,但这会使视图(及其他)级别的缓存变得不可能,因为不同类型的用户(根据 cookie、会话数据或用户数据)将获得不同的反应。

我正在考虑几个选项来实现这一点:

  • 从我的视图重定向到另一个缓存的视图。我不喜欢这种方法,因为它会影响用户体验(更改 URL)。我知道如果我想缓存在 HTTP 服务器级别,我需要选择这种方法。
  • 使用缓存标签在模板级别缓存(实际上可以缓存整个模板,从头到脚)。这样,我仍然可以为每种情况使用不同的模板。我想这是一个不错的方法,它仍然涉及运行模板引擎,这是我宁愿避免的。
  • 直接使用缓存框架在视图中缓存准备好的 HttpResponse 对象。实际上,这听起来像是它会提供最佳性能,但感觉有点像“重新发明轮子”。

还有其他想法吗?有什么标准的方式来做我所缺少的吗?

4

2 回答 2

2

在处理动态响应时,使用缓存模板标签是最好的选择。每当您对登录用户、会话存储等内容进行更改时,您根本无法缓存整个响应。使用缓存模板标签缓存模板中不变的位是下一个最好的事情。然后,至少,只需要处理实际的动态部分。

于 2012-04-09T16:39:52.027 回答
1

或者,您可以缓存页面并改变页面的动态位。这可以使用两阶段渲染来实现。

于 2014-06-18T11:54:00.433 回答