缓存场景:
1.博客列表页
2.电商商品详情页
场景特点:缓存的地方,数据变动频率较少
Django中设置缓存 --- 数据库缓存
将缓存的数据存储在数据库中 说明:尽管存储介质没有更换,但是当一次负责查询的结果直接存储到表里,不如多个条件的过滤查询拿结果,可避免重复进行复杂查询,提升效率
#数据库缓存 需手动执行创建表的命令
CACHES = {
'default':{
'BACKEND':'django.core.cache.backends.db.DatabaseCache',
'LOCATION':'my_cache_table',#手动创建表
'TIMEOUT':300,#缓存保存时间,单位秒,默认值300
'OPTIONS':{
'MAX_ENTRIES':300,#缓存最大数据条数
'CULL_FREQUENCY':2,#缓存条数达到最大时,删除1/x的缓存数据
}
}
}
python manage.py createcachetable #执行创建my_cache_table表的命令 python manage.py migrate #进行数据迁移
Django中使用缓存(整体缓存) ---- 视图函数中
#装饰器
from django.views.decorators.cache import cache_page
@cache_page(30) -->单位s
def my_view(request):
...
Django中使用缓存(整体缓存) ---- 路由中
from django.views.decorators.cache import cache_page
urlpatterns = [
path('foo/',cache_page(60)(my_view)),
]
例子:
#views.py代码
@cache_page
def test_cache(request):
t = time.time()
return HttpResponse('t is %s'%(t))
#有缓存走缓存 没缓存走视图
#url.py代码
from django.urls import path
from . import views
urlpatterns = [
path('test_page/',views.test_cache),
]