赞
踩
使用场景:经常做查询,对实时数据不作要求,数据量大等场景
内存缓存是缓存手段当中最快的,但是有内存溢出漏洞
文件缓存是缓存当中性价比最高,安全有漏洞
数据库缓存,再创建一个表存放经常查询的数据,设计难度比较高
# 数据库缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 缓存后台使用的引擎
'LOCATION': 'my_cache', # 数据库表
'TIMEOUT': 300, # 缓存超时时间(默认300秒,None表示永不过期,0表示立即过期)
'OPTIONS': {
'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
},
}
}
# 执行该命令后会发现数据库中多了一张my_cache表
python3 manage.py createcachetable
from django.core.cache import cache
from django.shortcuts import HttpResponse
import time
def use_caches(request):
if cache.get("current_time"):
current_time = cache.get("current_time")
else:
current_time = time.time()
cache.set("current_time",current_time,10) # 数据库中设置key为current_time ,value 为 current_time ,过期时间为 10s
return HttpResponse(current_time)
from django.shortcuts import HttpResponse
from django.views.decorators.cahe import cache_page
import time
@cache_page(10)
def use_caches(request):
current_time = time.time()
return HttpResponse(current_time)
from django.urls import path
from . import views
from djamgo.viwes.decorators.cache improt cache_page
urlpatterns =[
path('use_caches/',cache_page(10)(use_caches)), # 只对当前路由进行缓存
]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。