2016-09-06 3 views
0

Я использую django page cache decorator для кэширования только моей домашней страницы, из-за чего верхний и нижний колонтитулы также кэшируются. Таким образом, если запрос поступает из другого URL-адреса, он выбирает только верхний и нижний колонтитулы только из кеша. Поскольку мой верхний и нижний колонтитулы динамичны для разных 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' %} 

это сделает каждый запрос этой точки зрения сделать все SQL запросы, необходимые для header и footer, но body будет кэшировать.

Смежные вопросы