我正在尝试各种Django 1.3缓存方法,以用于我们的目标网页。此页面包含多个数据库查询以及用户身份验证的结果。到目前为止,性能最佳的解决方案是使用@cache_page decorator来缓存整个视图函数响应。问题是用户身份验证也会被缓存。
我可以为每个用户在缓存中创建一个密钥,但这似乎很浪费;一遍又一遍地缓存相同的登录页面,唯一的区别是用户的身份验证。除了身份验证之外,我还使用了template fragment caching和low-level caching,但性能远不及@cache_page装饰器方法。
有没有办法在没有大量基于用户的冗余缓存的情况下获得@cache_page的性能?
答案 0 :(得分:2)
查看此博文:http://www.holovaty.com/writing/django-two-phased-rendering/
基本上,该技术是将用户特定的段包装在模板标记中,以阻止模板引擎呈现它们,然后缓存,然后重新呈现缓存的输出以填充用户详细信息。
Django 1.5包含一个名为verbatim
的标记,可用于代替帖子中的自定义raw
标记;你仍然需要自定义CachedTemplateMiddleware
或等效的。