2016-09-06 68 views
0

我正在使用django页面缓存修饰缓存只有我的主页,因此,页眉和页脚也获得缓存。所以,如果请求来自不同的URL,它只从缓存中选择页眉和页脚。因为我的页眉和页脚对于不同的网站是动态的。所以,有些链接是给404的。有没有办法通过清除页眉和页脚或者更好的方法来解决这个问题?Django页面缓存缓存页眉和页脚

回答

2

您可能需要使用template fragment caching feature

如果你更大的控制权后,你也可以使用cache模板标签缓存模板片段。要让您的模板可以访问此代码,请将{% load cache %}放在模板顶部附近。

{% cache %}模板标记将块的内容缓存给定的时间量。它至少需要两个参数:以秒为单位的高速缓存超时以及给出高速缓存片段的名称。该名称将被视为不使用变量。例如:

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

我仍然还学习如何处理与动态页面缓存。我会告诉我的解决方案,直到比我更好的人给你一个更有经验的解决方案。

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

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

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

这将使这个观点每一个要求让所有的headerfooter所需的SQL查询,但body将被缓存。