|
Table of contents
|
Более гранулированный способ использования механизма кэширования даёт управление на уровне отдельных представлений. Оно имеет эффект, аналогичный кэшированию отдельных сайтов. Данный способ кэширования можно применять к любому представлению. Кэширование выполняется с помощью декоратора, который оборачивается вокруг функции представления и изменяет её поведение для использования механизма кэширования. Такой декоратор имеет имя cache_page и находится в модуле django.views.decorators.cache, например: from django.views.decorators.cache import cache_page
def my_view(request, param):
# ...
my_view = cache_page(my_view, 60 * 15)
Аналогично, если вы используете Python версии 2.4 и выше, вы можете использовать особый синтаксис для декоратора. Нижеприведённый пример эквивалентен предыдущему: from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def my_view(request, param):
# ...
Декоратор cache_page принимает один аргумент,
время жизни страницы в кэше, в секундах. В предыдущем примере,
результат работы представления
Кэш для каждого представления, как и кэш для отдельного сайта,
зависит от URL. Если несколько URL указывают на одно и то же
представление, каждый URL будет кэшироваться отдельно. Продолжая
пример с urlpatterns = ('',
(r'^foo/(\d{1,2})/$', my_view),
)
то запросы к /foo/1/ и /foo/23/ будут закэшированы отдельно, как вы могли ожидать. Но после того как будет произведено кэширование определённого URL, все последующие запросы к нему будут использовать кэш.
Примеры из предыдущей секции имели жёстко определённый факт
кэширования представления, потому что
Это сделать легко: просто оберните функцию представления с
помощью urlpatterns = ('',
(r'^foo/(\d{1,2})/$', my_view),
)
Здесь приведён тот же пример, но уже с функцией
from django.views.decorators.cache import cache_page
urlpatterns = ('',
(r'^foo/(\d{1,2})/$', cache_page(my_view, 60 * 15)),
)
При использовании этого подхода не следует забывать об импорте
функции |
Found misprint?
Select it with the mouse and hit Enter
-
Processed:
33
1
199
25
The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!
We are glad to hear your questions, comments or suggestions!
(Open in new tab)
Users number: 601
Русская группа
Ускорить процесс перевода!
ЯМ:41001223475816
|
| © 2008-2012 Ruslan Popov @ gmail.com | Powered by Django 1.2.5 |