2008-12-07 11 views
17

Есть ли способ быть уверен, что страница исходит из кеша на производственном сервере и на сервере разработки?Как проверить кэширование django?

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

Проверка подлинности данных не является очень безопасным методом тестирования IMO.

ответ

19

Мы выполняем много кэширования компонентов, и не все из них обновляются одновременно. Таким образом, мы устанавливаем значения хоста и метки времени в универсально включенном процессоре контекста. В верхней части каждого фрагмента шаблона мы вставляем в:

<!-- component_name {{host}} {{timestamp}} --> 

имя_компонента только делает это легко сделать View Source и поиск этой строки.

Все наши представления, которые являются объектом детализация страницы определяют контекст переменную «page_object» и мы имеем это в верхней части мастер шаблона base.html:

<!-- {{page_object.class_id}} @ {{timestamp}} --> 

class_id() является методом из суперкласс, используемый всеми нашими основными классами контента. Это просто:

def class_id(self): 
    "%s.%s.%s" % (self.__class__._meta.app_label, 
        self.__class__.__name__, self.id) 

При загрузке страницы и любой из временных меток больше, чем несколько секунд назад, это очень хорошая ставка, что кэшировалась компонент.

+0

Элегантное решение. Может быть также автоматизирован. Благодарю. – muhuk 2008-12-08 07:11:23

+0

Просто для удобства у вас есть контекстные процессоры, которые вы упомянули где-то на djangosnippets.org или на другом сайте? – Matthew 2008-12-08 17:22:02

7

Отметьте вид, нажмите на страницу и посмотрите, был ли вызван макет. если бы это было не так, вместо этого использовался кеш.

3

Причина, по которой вы используете кеши, - улучшить производительность. Проверьте производительность, выполнив проверку нагрузки на ваш сервер. Если производительность сервера соответствует вашим потребностям, тогда вы все настроены!

14

Предложение Peter Rowells хорошо работает, но для временных меток вам не нужен настраиваемый контекстный обработчик шаблонов . Вы можете просто использовать тег шаблона:

<!-- {% now "jS F Y H:i" %} --> 
Смежные вопросы