|
Table of contents
|
Изредка кэширование всей страницы не даёт ожидаемой пользы и, если честно, является неудобным. Возможно, к примеру, ваш сайт содержит представление, чей результат зависит от нескольких сложных запросов и постоянно меняется. В таком случае, использование кэширования для всей страницы будет всё портить, так как некоторая часть данных будет постоянно меняться, но вам всё ещё необходимо использовать механизм кэширования. Для случаев подобных этому, Django предоставляет простой интерфейс низкого уровня к механизму кэширования, который располагается в модуле django.core.cache. Вы можете использовать API низкого уровня для хранения объектов в кэше на любом уровне гранулярности, который вам потребуется. Вы можете поместить в кэш любой объект языка Python, который может быть сериализован с помощью модуля pickle: строки, словари, списки моделей объектов и так далее. (Почти каждый объект языка Python может быть сериализован, обратитесь к документации Python по модулю pickle.) Вот так происходит импортирование API: >>> from django.core.cache import cache
Простые методы >>> cache.set('my_key', 'hello, world!', 30)
>>> cache.get('my_key')
'hello, world!'
Аргумент timeout_seconds является необязательным, а его значение по умолчанию было указано ранее.
Если объект не существует в кэше или сам кэш недоступен, то
# Ждём 30 секунд пока 'my_key' "протухнет"...
>>> cache.get('my_key')
None
>>> cache.get('some_unset_key')
None
Мы не рекомендуем хранить строковое значение None в кэше, потому что вы не будете иметь возможность отличить ваше сохранённое None от отсутствия значения в кэше, которое тоже возвращается как None.
Функция >>> cache.get('my_key', 'has expired')
'has expired'
Для получения нескольких значений из кэша за один запрос надо
использовать метод >>> cache.set('a', 1)
>>> cache.set('b', 2)
>>> cache.set('c', 3)
>>> cache.get_many(['a', 'b', 'c'])
{'a': 1, 'b': 2, 'c': 3}
Если запрашиваемое значение не существует или «протухло», то оно не будет включено в словарь: >>> cache.get_many(['a', 'b', 'c', 'd'])
{'a': 1, 'b': 2, 'c': 3}
Наконец, вы можете явно удалять значения из кэша с помощью
метода >>> cache.delete('a')
Метод |
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 |