如今我网页的逻辑是,响应请求,查找数据库相关信息,渲染模版生成最终页面,最后返回。使用缓存后就是将这个页面保存一段时间,在有响应请求相同页面的时候,能够直接返回,不用再作那么多步。python
直接在settings.py
中设置要使用的缓存形式,和添加一些特定的参数来自定义。redis
我选择的是用redis来作缓存数据库,而如今就有一个很是好的插件django-redis
,能够直接用。下载库以后直接设置为caches
的后端就好了,简单配置以下:数据库
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PICKLE_VERSION": -1, "IGNORE_EXCEPTIONS": True, } } }
设置完以后,在对应的视图函数views.py
用cache
装饰器去装饰对应的函数型视图函数,或者在urls.py
中,用直接用cache
这个函数去处理对应视图函数。django
在views.py
后端
from django.views.decorators.cache import cache_page @cache_page def foo(request): *** return response
在urls.py
缓存
from django.views.decorators.cache import cache_page urlpatterns = [ url(r'^$', cache_page(60 * 15)(views.HomeView.as_view()), name='home'), ]
还能够在模版文件中,缓存某部分页面(我的感受主要去缓存那些要与数据库交互的部分就行了)函数
{% load cache %} {% cache 60 some_part} ********* {% endcache %}
其实cache
的储存方式能够理解成相似于字典,都是键值对应的。测试
在导入cache
以后,直接按字典型操做,就能够取到缓存中的值了。url
>>> from django.core.cache import cache >>> cache.set("foo", "value", timeout=25) >>> cache.ttl("foo") 25 >>> cache.ttl("not-existent") 0
以上例子来自django-redis
的文档。插件
在官方文档下载完压缩包后,解压,而后就make test
,经过以后就能够make --prefix=/usr/redis
,make install
。
完成安装后,去到目录下,测试server
是否能成功启动。
配置方面,我暂时就只设置了守护进程,日志等级,存放位置,储存上限,满上限后的删除规则。