Как проверить кэширование django?

17

Есть ли способ уверен , чтобы страница поступала из кеша на рабочий сервер и на сервер разработки?

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

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

    
задан muhuk 07.12.2008 в 18:41
источник

4 ответа

19

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

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

Имя_компонента просто упрощает просмотр источника и поиск этой строки.

Все наши представления, которые являются объектно-подробными страницами, определяют контекстную переменную «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)

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

    
ответ дан Peter Rowell 08.12.2008 в 03:33
источник
  • Элегантное решение. Может быть также автоматизирован. Благодарю. –  muhuk 08.12.2008 в 08:11
  • Просто ради удобства у вас есть контекстные процессоры, которые вы упомянули где-то на djangosnippets.org или на другом сайте? –  Matthew 08.12.2008 в 18:22
  • Добавление обработчика контекста очень просто! 1. Создайте файл, например. my_context.py. 2. Создайте функцию, которая принимает объект запроса, например. my_context (запрос). 3. Верните подсказку забавных вещей, доступных всем шаблонам. 4. Добавьте «my_context.my_context» в TEMPLATE_CONTEXT_PROCESSORS в settings.py. 5. Прибыль! –  Peter Rowell 08.12.2008 в 21:13
14

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

 <!-- {% now "jS F Y H:i" %} --> 
    
ответ дан Johannes 06.04.2011 в 10:32
источник
  • FWIW очень сильно нарушил стиль моего сайта в IE8, когда я добавил его в качестве первой строки моего шаблона. Кажется, все хорошо, когда оно находится внутри тегов html. И я поместил его в теги комментариев html. Долгое время выяснилось, что это послужило причиной моих проблем с CSS. –  j_syk 18.08.2011 в 01:48
  • Извините, что, боюсь, я забыл про теги комментариев. Поэтому я исправил запись в решении. –  Johannes 22.08.2011 в 13:26
  • он просто должен быть внутри объявления <html>. просто думал, что буду публиковать для будущих людей, читающих эту тему. но спасибо, это простое и эффективное решение –  j_syk 22.08.2011 в 15:09
  • Самое элегантное решение. +1 –  TomNysetvold 27.04.2012 в 03:29
7

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

    
ответ дан ironfroggy 07.12.2008 в 22:06
источник
3

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

    
ответ дан Ned Batchelder 07.12.2008 в 23:12
источник