我使用django页面缓存装饰器只缓存我的主页,因此,页眉和页脚也会被缓存。因此,如果请求来自不同的URL,则它仅从缓存中选择页眉和页脚。因为我的页眉和页脚是动态的不同网址。所以,有些链接正在给404.有没有办法通过仅清除页眉和页脚或更好的东西来解决这个问题?
答案 0 :(得分:2)
您可能需要使用template fragment caching feature:
如果您需要更多控制权,还可以使用
cache
模板标记缓存模板片段。要让您的模板能够访问此标记,请将{% load cache %}
放在模板顶部附近。
{% cache %}
模板标记将块的内容缓存一段给定的时间。它至少需要两个参数:缓存超时(以秒为单位)和提供缓存片段的名称。名称将按原样使用,不要使用变量。例如:{% load cache %} {% cache 500 sidebar %} .. sidebar .. {% endcache %}
答案 1 :(得分:2)
除了使用片段缓存的响应之外,还有基于两阶段模板渲染的django-phased。
答案 2 :(得分:1)
我还在学习如何处理动态页面的缓存。我会告诉我的想法是解决方案,直到有人比我更有经验的人。
您需要在模板级别进行缓存(更准确地说,您需要缓存模板的片段)。
由于页眉和页脚是动态的,因此您只能缓存页面的正文片段。可以这样做:
{% include 'header.html' %}
{% cache 1000 'bodycache' %}
{% include 'body.html' %}
{% endcache %}
{% include 'footer.html' %}
这将使对此视图的每个请求都生成header
和footer
所需的所有sql查询,但body
将被缓存。