Django中提供了6种缓存方式:

  • 开发调试
  • 内存
  • 文件
  • 数据库
  • Memcache缓存(python-memcached模块)
  • Memcache缓存(pylibmc模块)

配置文件

# 内存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
'OPTIONS': {
'MAX_ENTRIES': 100, # 最大缓存个数(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
},
}
}

应用

视图中缓存

  • 视图缓存只需要加上一个cache_page即可
from django.views.decorators.cache import cache_page

@cache_page(5)
def student_list(request, *args, **kwargs):
students = models.Student.objects.all()
print('students')
return render(request, 'student_list.html', {'students': students})

全栈缓存

  • 修改配置文件
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
....
'django.middleware.cache.FetchFromCacheMiddleware',
] #使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用 FetchFromCacheMiddleware 获取内容并返回给用户,当返回给用户之前,判断缓存中是否已经存在,如果不存在则UpdateCacheMiddleware 会将缓存保存至缓存,从而实现全站缓存。

模板局部缓存

  • 使用内建的自定义标签
{% load cache %}

{% cache 5 'xxx' %}

    缓存
{{ now }} {% endcache %}

使用redis做缓存实例

#1.安装 pip install django-redis
#2.在stting中配置CACHES,可以设置多个缓存,根据名字使用
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100}
# "PASSWORD": "密码",
}
}
},
#另添加缓存
"JERD": { }
#3.根据名字去连接池中获取连接,视图中连接(手动操作redis)
from django.shortcuts import HttpResponse
from django_redis import get_redis_connection def index(request):
r = get_redis_connection("default")
r.hmset("name_a", {"key_a": "value_a", "key_b": "value_b"})
return HttpResponse("设置redis") def order(request):
r = get_redis_connection("default")
val = r.hmget("name_a", ["key_a", "key_b"])
print(val) # [b'value_a', b'value_b']
return HttpResponse("获取redis") 中间件:全站使用缓存 MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware', # 放在第一
# 其他中间件...
'django.middleware.cache.FetchFromCacheMiddleware', # 放在最后
] CACHE_MIDDLEWARE_ALIAS = "" # 用于存储的缓存别名
CACHE_MIDDLEWARE_SECONDS = 600 # 每个页面应缓存的秒数
CACHE_MIDDLEWARE_KEY_PREFIX = "" # 如果使用相同的Django安装在多个站点之间共享缓存,请将其设置为站点名称或此Django实例特有的其他字符串,以防止发生密钥冲突。如果你不在乎,请使用空字符串。

最新文章

  1. {"读取 XML 数据时,超出最大名称表字符计数配额(16384)。。。。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxNameTableCharCount 属性,。。
  2. Hibernate SQLQuery简单实用,做链接查询
  3. 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
  4. 用WinRAR进行安装包的制作
  5. Oracle修改字段类型方法总结(转)
  6. Juniti学习总结
  7. xubuntu install nodejs
  8. Python学习_从文件读取数据和保存数据
  9. 在node.js中使用ejs的demo 第五篇
  10. FineUI_动态绑定Grid
  11. 智能家居项目(2):项目project框架的搭建
  12. AC自己主动机
  13. 获取鼠标点击相对于Canva位置的2种方法
  14. html、js、django处理日期问题
  15. 负载均衡,会话保持,session同步(转)
  16. 【USACO08NOV】奶牛混合起来Mixed Up Cows
  17. CentOS 7 下安装mosquitto
  18. flask轻量级框架入门
  19. PCI9054 总结(讲解非常清楚)
  20. 自定义mvc或mtv框架:基于wsgiref的web框架

热门文章

  1. 巧用 CSS 实现炫彩三角边框动画
  2. MethodImpl 特性
  3. linux常用命令与实例小全
  4. Python:PIL(二)——相关概念
  5. 利用POST请求模拟登录豆瓣
  6. Laravel-手机短信验证码-阿里云
  7. Lua中如何实现类似gdb的断点调试—09支持动态添加和删除断点
  8. 大数据教程-01HDFS的基本组成和原理
  9. ClickHouse镜像在阿里云镜像站首发上线
  10. nginx反向代理出现了代理的端口号