Django页面缓存是缓存页眉和页脚

时间:2016-09-06 07:15:01

标签: django caching

我使用django页面缓存装饰器只缓存我的主页,因此,页眉和页脚也会被缓存。因此,如果请求来自不同的URL,则它仅从缓存中选择页眉和页脚。因为我的页眉和页脚是动态的不同网址。所以,有些链接正在给404.有没有办法通过仅清除页眉和页脚或更好的东西来解决这个问题?

3 个答案:

答案 0 :(得分:2)

您可能需要使用template fragment caching feature

  

如果您需要更多控制权,还可以使用cache模板标记缓存模板片段。要让您的模板能够访问此标记,请将{% load cache %}放在模板顶部附近。

     

{% cache %}模板标记将块的内容缓存一段给定的时间。它至少需要两个参数:缓存超时(以秒为单位)和提供缓存片段的名称。名称将按原样使用,不要使用变量。例如:

{% load cache %}
{% cache 500 sidebar %}
    .. sidebar ..
{% endcache %}

答案 1 :(得分:2)

除了使用片段缓存的响应之外,还有基于两阶段模板渲染的django-phased。

http://django-phased.readthedocs.io/en/latest/

答案 2 :(得分:1)

我还在学习如何处理动态页面的缓存。我会告诉我的想法是解决方案,直到有人比我更有经验的人。

您需要在模板级别进行缓存(更准确地说,您需要缓存模板的片段)。

由于页眉和页脚是动态的,因此您只能缓存页面的正文片段。可以这样做:

{% include 'header.html' %}
{% cache 1000 'bodycache' %}
{% include 'body.html' %}
{% endcache %}
{% include 'footer.html' %}

这将使对此视图的每个请求都生成headerfooter所需的所有sql查询,但body将被缓存。