В чем разница между кешем django: кеш на сайт, кеш на просмотр, указание кеша на просмотр и кэширование фрагментов шаблона - PullRequest
0 голосов
/ 19 февраля 2011

я знаю, что у django есть некоторый метод кеширования, такой как кеш на сайт, кеш на просмотр, указание кеша на просмотр и кэширование фрагментов шаблона но в чем разница между этими кешами? кеш на сайт означает, что кеш системы кеширует весь сайт? Как я могу понять слова «кешировать весь сайт»?

1 Ответ

7 голосов
/ 19 февраля 2011

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

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

Документы для кэша сайта
http://docs.djangoproject.com/en/dev/topics/cache/#the-per-site-cache

Как только кэш настроен, самый простой способ использовать кеширование - это кэшировать весь ваш сайт.

По сути, это набор промежуточного программного обеспечения, поэтому он кэширует все представления.Промежуточное программное обеспечение применяется к каждому запросу / ответу.


Для документов кэша просмотра
http://docs.djangoproject.com/en/dev/topics/cache/#the-per-view-cache

Более детальный способ использованияОсновой кэширования является кэширование вывода отдельных представлений.django.views.decorators.cache определяет декоратор cache_page, который автоматически кеширует ответ представления для вас.

Это кеш для каждого представления.Вы можете решить кэшировать определенное представление, применив декоратор @cache_page к определенному представлению (в отличие от всех представлений выше)


Документы кеша фрагментов шаблона
http://docs.djangoproject.com/en/dev/topics/cache/#template-fragment-caching

Тег шаблона {% cache%} кэширует содержимое блока в течение заданного промежутка времени.

Это позволяет вам кэшировать фрагменты вашего шаблона (в отличие от полного представления выше), например, вы можете кэшировать дорогой запрос в шаблоне, в то время как другие части сайта по-прежнему обслуживаются динамически.

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


Если вы будете читать дальше в документах, вы также получите API кеша:

Документы кеша API
http://docs.djangoproject.com/en/dev/topics/cache/#the-low-level-cache-api

Это в основном то, как вы получаете контроль над кешем в коде Python (в отличие от шаблона выше).

# imagine you have a function that takes a day to complete.
cache.set('very_expensive_homepage_logic', takes_a_day_to_calculate())

# now if you call get() with your key, it will be returned and you won't have to wait a day to calculate.
cache.get('very_expensive_homepage_logic')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...