初试Django的缓存系统
初试Django的缓存系统
现在我网页的逻辑是,响应请求,查找数据库相关信息,渲染模版生成最终页面,最后返回。使用缓存后就是将这个页面保存一段时间,在有响应请求相同页面的时候,可以直接返回,不用再做那么多步。
Django-redis
直接在settings.py中设置要使用的缓存形式,和添加一些特定的参数来自定义。
我选择的是用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这个函数去处理对应视图函数。
在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之后,直接按字典型操作,就可以取到缓存中的值了。
>>> 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/redis,make install。
完成安装后,去到目录下,测试server是否能成功启动。
配置方面,我暂时就只设置了守护进程,日志等级,存放位置,储存上限,满上限后的删除规则。
初试Django的缓存系统的更多相关文章
- Django Cache缓存系统学习--数据库缓存
Django是动态网站,用户每一次请求页面,服务器都会执行以下操作:数据库查询.渲染模版.执行业务逻辑,最后生成用户可查看的页面.当访问量比较大的时候,会消耗掉大量的资源,这时候就会考虑到缓存问题. ...
- Django 缓存系统
Django 是动态网站,一般来说需要实时地生成访问的网页,展示给访问者,这样,内容可以随时变化,但是从数据库读多次把所需要的数据取出来,要比从内存或者硬盘等一次读出来 付出的成本大很多. 缓存系统工 ...
- Django缓存系统
在动态网站中,用户每次请求一个页面,服务器都会执行以下操作:查询数据库,渲染模板,执行业务逻辑,最后生成用户可查看的页面. 这会消耗大量的资源,当访问用户量非常大时,就要考虑这个问题了. 缓存就是为了 ...
- Django缓存系统选择之Memcached与Redis的区别与性能对比
Django支持使用Memcached和Redis这两种流行的内存型数据库作为缓存系统.我们今天来看Memcached和Redis的区别和性能对比. redis和memcached的区别 1.Redi ...
- django之memcached缓存系统
django其他缓存方法:(https://www.cnblogs.com/jishuweiwang/p/6110809.html) memcached版本 <1.5 1. memcached缓 ...
- Django用户认证系统(三)组与权限
Django的权限系统很简单,它可以赋予users或groups中的users以权限. Django admin后台就使用了该权限系统,不过也可以用到你自己的代码中. User对象具有两个ManyTo ...
- django-restframework之缓存系统
django-restframework之缓存系统 一 前言 一 为什么需要缓存 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增.删.查.改,渲染模块,执行业务逻辑,最后生成用户看到的 ...
- Django与缓存
我们都知道Django建立的是动态网站,正常情况下,每次请求过来都经历了这样一个过程: 接收请求 -> url路由 -> 视图处理 -> 数据库读写 -> 视图处理 -> ...
- django的缓存,信号,序列化
一 Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的 ...
随机推荐
- Hacker需要掌握的基础
编译语言:1.C语言能力要求:精通选用教材:<C Primer Plus 中文版(第5版)>其他教材:<标准C程序设计(第3版)><C语言入门经典(原书第3版)>补 ...
- python令牌桶算法
import time class TokenBucket(object): # rate是令牌发放速度,capacity是桶的大小 def __init__(self, rate, capacity ...
- dubbo系列二、dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台)
一.zookeeper配置中心安装 1.下载安装包,zookeeper-3.4.6.tar.gz 2.解压安装包,修改配置文件 参考zookeeper-3.4.6/conf/zoo_sample.cf ...
- WebRTC服务器——Licode 环境搭建
WebRTC服务器--Licode 环境搭建 系统配置 阿里云服务器 Ubuntu 14.04.5 LTS Docker 环境搭建 在一台空的机器上搭建docker环境,先要安装docker,执行下面 ...
- uboot 传递的参数 mtdparts
启动uboot后,在重新烧写程序之前,查看传递给内核的参数时(命令为: printenv),看到如下内容: bootargs=console=ttyS0,115200 mtdparts=spi0.0: ...
- http响应头设置
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletExcep ...
- http转发
该http转发,我感觉有点类似于负载均衡(我还没有详细了解过负载均衡). 现在有三个站点,想自己建立一个web,对三个站点进行整合,效果如图所示: a)现状:浏览器需要访问3个站点,需要记住3个地址, ...
- 一台电脑,两个及多个git账号配置
1. 生成两[三]个ssh公钥私钥 方法参照:http://www.cnblogs.com/fanbi/p/7772812.html第三步骤 假定其中一个是id_rsa, 另一个时id_rsa_two ...
- poj2828 伸展树模拟
用伸展树模拟插队比线段树快乐3倍.. 但是pojT了.别的oj可以过,直接贴代码. 每次更新时,找到第pos个人,splay到根,然后作为新root的左子树即可 #include<iostrea ...
- Unicode转义序列
声明: web前端学习笔记,欢迎大神指点.联系QQ:1522025433. Javascipt 定义了一种特殊序列,使用6位ASCII字符代表任意16Unicode内码.这些Unicode转义序列均以 ...