django学习之- 数据缓存

5种配置:开发调试 CACHES = {            ‘default‘: {                ‘BACKEND‘: ‘django.core.cache.backends.dummy.DummyCache‘,     # 引擎内存CACHES = {    ‘default‘: {        ‘BACKEND‘: ‘django.core.cache.backends.locmem.LocMemCache‘,        ‘LOCATION‘: ‘unique-snowflake‘, # 注意这个必须唯一,相当于变量名    }}文件CACHES = {    ‘default‘: {        ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘,        ‘LOCATION‘: ‘/var/tmp/django_cache‘,    }}数据库CACHES = {    ‘default‘: {        ‘BACKEND‘: ‘django.core.cache.backends.db.DatabaseCache‘,        ‘LOCATION‘: ‘my_cache_table‘, # 数据库表    }}注:执行创建表命令 python manage.py createcachetablememcache(python-memcache模块)CACHES = {    ‘default‘: {        ‘BACKEND‘: ‘django.core.cache.backends.memcached.MemcachedCache‘,            ‘LOCATION‘: [                (‘172.19.26.240:11211‘,10),                (‘172.19.26.242:11211‘,11), # 后面的数字代表权重            ]    }}memcache(pylibmc模块)通用配置:   ‘TIMEOUT‘: 300,                                               # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)    ‘OPTIONS‘:{        ‘MAX_ENTRIES‘: 300,                                       # 最大缓存个数(默认300)        ‘CULL_FREQUENCY‘: 3,                                      # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)    },    ‘KEY_PREFIX‘: ‘‘,                                             # 缓存key的前缀(默认空)    ‘VERSION‘: 1,                                                 # 缓存key的版本(默认1)    ‘KEY_FUNCTION‘ 函数名                                          # 生成key的函数(默认函数会生成为:【前缀:版本:key】)

3种应用:全站缓存,views缓存,页面局部缓存实例:文件缓存1:添加文件缓存配置到setting中,缓存目录为项目下的cache
CACHES = {
    ‘default‘: {
        ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘,
        ‘LOCATION‘: os.path.join(BASE_DIR,‘cache‘),
    }
}
添加缓存第一种,对views函数添加缓存在需要添加缓存的函数名上添加装饰器from django.views.decorators.cache import cache_page@cache_page(10) # 10表示数据缓存10秒
from django.views.decorators.cache import cache_page
@cache_page(10)
def cache(request):
    import time
    ctime = time.time()
    return render(request,‘cache.html‘,{‘ctime‘:ctime})
第二种,对页面中个别功能进行缓存    第一步在网页的头部第一行添加:{% load cache %}    第二部使用{% cache 500 缓存key %} ....% endcache %}包裹住需要缓存的内容    注意:5000表示缓存超时时间5000秒,

{% load cache %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ ctime }}
{{ ctime }}
{{ ctime }}
{% cache 10 c1 %}
{{ ctime }}
{% endcache %}
</body>
</html>

第三种,对整个网站都使用缓存(需要用中间件)修改setting的MIDDLEWARE,    - 开头添加:‘django.middleware.cache.UpdateCacheMiddleware‘ # 这个中间件只有process_response    - 结尾添加:‘django.middleware.cache.FetchFromCacheMiddleware‘ # 这个中间件只有process_request缓存流程:当请求进来通过中间件,到达最后一个request进行缓存查找,如果不存在则进行函数执行,完成后数据进行返回执行response,response返回执行到最后一个response的时候,检查缓存是否存在,不存在就进行缓存并返回给用户。应用的优先:全站最高-》视图函数-》局部缓存最低(是根据请求生命周期可以分析出)
时间: 2024-10-08 17:51:29

django学习之- 数据缓存的相关文章

学习猿地 python教程 django教程9 Django使用redis实现缓存

# Django使用redis实现缓存 ### 环境搭建安装 * 1,安装redis服务 ``` sudo apt-get install redis ``` * 2,安装django组件 ``` sudo pip3 install django-redis ``` ### Django项目配置 ```py settings.py CACHES = { "default": { # 引擎 "BACKEND": "django_redis.cache.Red

jQuery源代码学习之六——jQuery数据缓存Data

一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所有用户自定义数据都被保存在这个对象的cache属性下,cache在此姑且称之为自定义数据缓存: 自定义数据缓存和DOM元素/javascript对象通过id建立关联,id的查找通过DOM元素/javascript元素下挂载的expando属性获得 话不多说,直接上代码.相关思路在代码注释中都有讲解

TimesTen 应用层数据库缓存学习:17. 全局数据缓存(cache grid)的高可用性

概述 本文有两个目的: 1. 介绍TimesTen Global Cache Grid的高可用性 2. 给出了一个简单的建立和清理Global Cache Grid的过程,前面已经有一篇文章: TimesTen 应用层数据库缓存学习:13. 全局数据缓存(cache grid),但那个Cache Group太复杂 建立一个简单的Global Cache Grid 首先建立两个TimesTen instance,一个为tt1122, 一个为ttnew. 之所以建立两个实例,是为了停instance

Django之使用redis缓存session,历史浏览记录,首页数据实现性能优化

Redis缓存session 配置Django缓存数据到redis中 # diango的缓存配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", # 用户的session信息,历史浏览记录存储在redis数据库9中 "LOCATION": "redis://127.0.0.1:6379/9", "OPTIONS

迷你MVVM框架 avalonjs 学习教程7、数据缓存

jQuery的许多功能都可以通过avalon的绑定属性来处理,如click方法对应ms-click,css方法对应ms-css,toggle方法对应ms-visible,它的数据缓存功能avalon也搬过来了.但不同于jQuery的是,avalon是直接将数据保存到元素节点的HTML5的data-☆属性上.在从data-☆属性还原数据时,它会简单的数据转换,再返回给你. 在ms-data绑定中,考虑到如果将对象转换为字符串再还原会丢失函数什么的,因此它们会直接保存到元素之上. <!DOCTYPE

django学习之Model(四)MakingQuery

上一篇写到MakingQuey中的filter,本篇接着来. 10)-扩展多值的关系 如果对一个ManyToManyField或ForeignKey的表进行filter过滤查询的话,有2中方法可以用.分别是: #1 Blog.objects.filter(entry__headline__contains='Lennon', entry__pub_date__year=2008) #2 Blog.objects.filter(entry__headline__contains='Lennon')

django学习之Model(五)MakingQuery

接着上篇. 10-一次更新多个对象 有时想要对QuerySet中的所有对象的某一个field来设定一个值,这时候可以像下边这样用update(): # Update all the headlines with pub_date in 2007. Entry.objects.filter(pub_date__year=2007).update(headline='Everything is the same') 这样使用的update()只能是没有关联关系的model或者有ForeignKey的

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5

Django学习笔记(三)—— 模型 model

疯狂的暑假学习之 Django学习笔记(三)-- 模型 model 参考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # 用什么数据库管理系统 'NAME': '', # 数据库名称,如果用sqlite,要写完整路径 'USER': '', # 如果用sqlite,这个不用写 'PASSWORD': '', # 如果用sqlite,这个不用写