Django缓存博客

tgh*_*ghw 1 django caching

我有一个用Django编写的博客,我开始使用基本的Django缓存中间件和文件系统缓存后端.不幸的是,这导致了两个不应该被缓存的东西:用于登录用户的管理员链接(例如"编辑此帖子")和基于cookie的预先填充的评论表单.

为了解决这个问题,我开始使用模板缓存标记:

{% load cache %}

...admin links...
{% cache 500 blog_entry entry.id %}
...entry...
{% endcache %}
...comment form...
Run Code Online (Sandbox Code Playgroud)

但似乎整个页面仍然被缓存.如何设置缓存系统以缓存您明确设置的模板部分?

编辑:对于评论,如果有人在博客上发表评论,我会将他们的姓名,网站和电子邮件地址存储在会话变量中.如果他们回到网站,那么我使用该数据预填充表单的那些部分.但这意味着缓存系统可以使用预先填充的数据缓存视图,这是不好的.

Ric*_*cky 7

现在您需要删除缓存中间件,因为您正在缓存模板片段而不是整个页面.


Dav*_*veJ 5

将其添加到您的settings.py:

CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True
Run Code Online (Sandbox Code Playgroud)

这应该解决管理员链接的问题,我不太明白你的第二个问题(预先填充的评论)是什么?

  • 这篇Adrian Holovaty的文章可能是一本很好的读物:http://www.holovaty.com/writing/django-two-phased-rendering/我真的不喜欢使用JS来插入内容,即使它只是管理员内容. (3认同)