django cache api 及应用实例

荀博
2023-12-01

需求:将首页的一部分内容缓存下来,第二次访问时从缓存中取得,减少数据库的压力,减少响应时间,优化用户体验

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()

 

 类似资料: