Django-缓存内容
Django,缓存,内容
2025-03-13 21:27:21 时间
缓存的定义
- 缓存是一类可以更快速读取数据的统称,也指的是其他可以加快数据读取 速度的存储方式,一般用来存储临时数据.
- 视图渲染有一定的成本,数据库查询频繁过高,所以对于低频变动的页面 可以考虑使用缓存技术,减少实际渲染次数,用户拿到的响应时间会更低.
缓存案例
- 案例分析
from django.shortcuts import render
def index(request):
# 极度复杂的渲染
book_list = Info.objects.all() # 假设此处查询时间为2s,秒级返回真的很慢
request render(request,'index.html',locals())
- 优化思想-(尝试从缓存中查询)
if the page in cache:
retun cache
else:
1. # 存入数据
2. # 存入缓存
3. # 返回存入数据
设置缓存
将缓存存储在你的数据库中,可能是MySQL
说明: 尽管存储介质没有更换,但是当把每一次查询负责的结果存储到表里 比如多个条件的过滤查询结果,可避免重复进行查询。
# 此方式为存储到数据库中
CACHES = {
'default':{
'BACKEND':'django.core.cache.backends.db.DatabaseCache',
'LOCATION':'my_cache_table', # 存储到那张表中
'TIMEOUT':300,# 缓存保存时间单位为秒
'OPTIONS':{
'MAX_ENTRIES':300, # 缓存最大的数据条数
'CULL_FREQUENCY':2 # 缓存达到最大值,删除1/x的缓存数据1/2
}
}
}
# 此方式为存储到服务器内存中
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', # Cache文件的存储路径
}
}
执行createcachetable
python manage.py createcachetable
整体缓存策略
# 在视图中写
from django.views.decorators.cache import cache_page
@cache_page(15)
def test_cache(request):
t = time.time()
return HttpResponse("Time is %s"%(t)) # 可以使用时间戳进行测试
# 在路由中写
from django.urls import path
from . import views
from django.urls import re_path
urlpatterns = [
path('registory/',views.registry_view),
path('login/',cache_page(60)(login_view)),
]
缓存API的使用
# 方式1:引入cache[Key]
from django.core.cache import cache
def test_cache(request):
cache1 = cache['default'] # 把CACHE的KEY写到这里就行
cache2 = cache['myrails2']
# 方式2:from django.core.cache import cache
相当于直接引入了CACHES配置中的'default'
cache.set
cache.set(key,value,timeout)
-存储缓存
- key: 缓存的key,字符串类型
- value: Python对象
- timeout: 缓存存储时间,默认为
CACHES
的TIME OUT
值
cache.set('username','123')
cache.get
cache.get(key)
-获取缓存
- 返回值:Key的具体值,如果没有则返回None
cache.get('username')
cache.add
cache.add(key,value)
-存储缓存,只在Key不存在的时候生效
- 返回值:True=成功/False=失败
cache.add('user','name')
cache.get_many
cache.get_many(key_list)
-批量获取缓存
- key_list: 包含Key的数组
- 返回值: 取到的Key和Value的字典
cache.delete
cache.delete(key)
-删除Key
cache.delete_many
cache.delete_many(key_list)
-批量删除
相关文章
- Django中的关系映射
- 使用 Django 的 admin 定制后台,丰富自己网站的后台管理系统
- Django 使用 django-redis 作为缓存的正确用法,别忽略缓存的使用原则
- pycharm安装包说pip版本不对_django库
- pycharm django环境搭建_IDEA如何创建项目
- Django的设计模式
- Django之文件上传
- pycharm中安装django_pycharm环境配置教程
- 使用pycharm创建Django项目[通俗易懂]
- 一个提供公告和打赏功能的 django 应用插件 django-tctip
- vue django mysql_Python MySQL
- Python进阶27-Django 路由层
- Python项目部署-使用Nginx部署Django项目
- Django的ORM操作-创建数据
- pycharm运行环境配置_pycharm安装django
- Django模板引擎中变量作为属性值调用
- 一次完整的 Django 项目的迁移,有关 MySQL 数据库的导出与导入
- 博客将 Django 1.11+ 升级到 Django 2.2+ 遇到的问题及规避方法
- django RelatedObjectDoesNotExist
- Python进阶33-Django cookie和session