初试Django的缓存系统

初试Django的缓存系统

如今我网页的逻辑是,响应请求,查找数据库相关信息,渲染模版生成最终页面,最后返回。使用缓存后就是将这个页面保存一段时间,在有响应请求相同页面的时候,能够直接返回,不用再作那么多步。python

Django-redis

直接在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.pycache装饰器去装饰对应的函数型视图函数,或者在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的储存方式能够理解成相似于字典,都是键值对应的。测试

在导入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的文档。插件

下载安装redis

在官方文档下载完压缩包后,解压,而后就make test,经过以后就能够make --prefix=/usr/redismake install

完成安装后,去到目录下,测试server是否能成功启动。

配置方面,我暂时就只设置了守护进程,日志等级,存放位置,储存上限,满上限后的删除规则。

相关文章
相关标签/搜索