需求:将首页的一部分内容缓存下来,第二次访问时从缓存中取得,减少数据库的压力,减少响应时间,优化用户体验
django 提供了视图缓存、前端模板缓存,以及站点缓存
上述缓存效率不高,本次利用 cache api 来解决相关需求
def index(reuqest):
# 所有博客类型
if cache.get("blog_types"): # 如果博客类型在缓存中,就从缓存中取得类型
blog_types = cache.get("blog_types")
print("从缓存中加载博客类型")
else: #操作DB取博客类型,并且添加缓存
blog_types = BlogType.objects.all()
cache.set("blog_types", blog_types, 1800)
print("添加博客类型缓存")
context['blog_types'] = blog_types
return render(request, 'app_name/index.html', context)
cache.set(key, BlogType.objects.all(), expire)
其中 value 可以为任何 pickle的对象,例如列表,字典等,expire为缓存过期时间
cache.get(key)
获取对象, 即为 BlogType.objects.all()