Django:在页面中缓存除用户身份验证之外的所有内容

我正在尝试使用各种Django 1.3缓存方法来用于我们的登陆页面.此页面包含多个数据库查询以及用户身份验证的结果.到目前为止,性能最佳的解决方案是使用
@cache_page decorator缓存整个视图功能响应.问题是用户身份验证也会被缓存.

我可以为每个用户在缓存中创建一个密钥,但这似乎很浪费;一遍又一遍地缓存相同的登录页面,唯一的区别是用户的身份验证.除了身份验证之外,我还使用了template fragment cachinglow-level caching,但性能远不及@cache_page装饰器方法.

有没有办法在没有大量基于用户的冗余缓存的情况下获得@cache_page的性能?

最佳答案 看看这篇博文:
http://www.holovaty.com/writing/django-two-phased-rendering/

基本上,该技术是将用户特定的段包装在模板标记中,以阻止模板引擎呈现它们,然后缓存,然后重新呈现缓存的输出以填充用户详细信息.

Django 1.5包含一个名为verbatim的标签,可用于代替帖子中的自定义原始标签;你仍然需要自定义CachedTemplateMiddleware或等效的.

点赞