当前位置: 首页 > news >正文

网站建设需要资质么网络平台营销

网站建设需要资质么,网络平台营销,网站建设和制作,成都广告推广策划宣传公司Django REST framework 实现缓存机制以优化性能 页面首页中,导航菜单或轮播广告在项目中每一个页面都会被用户频繁访问到,所以我们可以实现缓存,减少MySQL数据库的查询压力,使用内存缓存可以加快数据查询速度。 cache_page 装饰…

Django REST framework 实现缓存机制以优化性能

页面首页中,导航菜单或轮播广告在项目中每一个页面都会被用户频繁访问到,所以我们可以实现缓存,减少MySQL数据库的查询压力,使用内存缓存可以加快数据查询速度。

cache_page 装饰器

根据django官方文档,
试图缓存:https://docs.djangoproject.com/zh-hans/5.0/topics/cache/#the-per-view-cache

示例:

使用缓存框架的通用办法是缓存视图结果。django.views.decorators.cache 定义了一个 cache_page 装饰器,它将自动缓存视图的响应:

from django.views.decorators.cache import cache_page@cache_page(60 * 15)
def my_view(request): ...

method_decorator@ 装饰器

装饰类视图:https://docs.djangoproject.com/zh-hans/3.2/topics/class-based-views/intro/#decorating-the-class

  • @ 装饰器语法(直接装饰器)

    1. 直接应用:装饰器直接应用于函数或方法的定义上。
    2. 作用域:装饰器的作用域仅限于被装饰的函数或方法。
    3. 继承性:如果一个方法被装饰,那么它的直接子类继承该方法时,不会自动继承装饰器。子类需要显式地添加相同的装饰器。
    4. 可读性:代码更直观,因为装饰器直接位于方法定义之前,易于理解和追踪。
    5. 限制:如果需要在继承链中多个级别应用相同的装饰器,需要在每个类中重复相同的装饰器代码。
  • method_decorator(类级别装饰器)

    1. 动态应用:装饰器在类定义之后、方法定义之前动态应用。
    2. 作用域:可以为类中的一个或多个方法添加装饰器。
    3. 继承性:通过 method_decorator 应用的装饰器会被所有继承该类的子类继承,无需在子类中重复添加。
    4. 灵活性:可以在不修改原始方法定义的情况下,为类的方法添加装饰器。
    5. 复杂性:可能稍微降低代码的可读性,因为装饰器的应用与方法定义分离。

代码实现

前提是的settings中配置好了CACHE

from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
from rest_framework.generics import ListAPIView
import constantsclass CacheListAPIView(ListAPIView):"""列表缓存视图"""@method_decorator(cache_page(time_out=constants.LIST_PAGE_CACHE_TIME))def get(self,request, *args, **kwargs):# 重写ListAPIView的get方法,但是不改动源代码。仅仅装饰而已return super().get(request, *args, **kwargs)

此时,主页视图中的头部脚部轮播图等api接口都可以继承该类,实现缓存

import constants
from views import CacheListAPIView
from .models import Nav, Banner
from .serializers import NavModelSerializer, BannerModelSerializerclass NavHeaderListAPIView(CacheListAPIView):"""顶部导航视图"""queryset = Nav.objects.filter(position=constants.NAV_HEADER_POSITION, is_show=True, is_deleted=False).order_by("orders", "-id")[:constants.NAV_HEADER_SIZE]serializer_class = NavModelSerializerclass NavFooterListAPIView(CacheListAPIView):"""脚部导航视图"""queryset = Nav.objects.filter(position=constants.NAV_FOOTER_POSITION, is_show=True, is_deleted=False).order_by("orders", "-id")[:constants.NAV_FOOTER_SIZE]serializer_class = NavModelSerializerclass BannerListAPIView(CacheListAPIView):"""轮播广告视图"""queryset = Banner.objects.filter(is_show=True, is_deleted=False).order_by("orders", "-id")[:constants.BANNER_SIZE]serializer_class = BannerModelSerializer

此时,访问试图后,缓存数据库中就有缓存好的信息了。
在这里插入图片描述

若有错误与不足请指出,关注DPT一起进步吧!!!

http://www.hengruixuexiao.com/news/33038.html

相关文章:

  • 资源搜索网站是怎么做的自己做的网站怎么推广
  • 万网企业邮箱上海关键词优化推荐
  • 政府网站群集约化建设免费建站的网站有哪些
  • 做小型企业网站多少钱2023年新闻摘抄十条
  • 做爰片免费观看网站高端网站建设定制
  • 好网站建设公司开发建网站流程
  • 潍坊优化网站百度搜索推广采取
  • 网站建设团队线上销售如何找到精准客户
  • utc+wordpressseo网上课程
  • 网页制作重庆英文外链seo兼职在哪里找
  • wordpress地址(url)站点地址(url)搜索引擎营销seo
  • 无锡百度快照优化排名企业关键词排名优化哪家好
  • 合肥网站建设 合肥网络推广重庆网站seo诊断
  • 做征婚网站有哪些优化大师使用方法
  • 网站效果用什么软件做seo门户网站建设方案
  • 设计方案的步骤重庆网站seo公司
  • 学做披萨的网站企业网站设计思路
  • 手机企业网站建设免费seo关键词优化方案
  • 营销网站建设汉狮电话外贸建站平台
  • 网站建设的流程图示武汉网络推广有限公司
  • 内蒙古建设协会网站可以发外链的平台
  • 网站开发和报价方案怎么做好网站方式推广
  • 建设政府官方网站的要求网络营销软文范例300
  • 用axure做网站优化快速排名公司
  • 中国建设银行官网站诚聘英才今日国内新闻
  • 外贸做哪个网站平台百度竞价排名魏则西事件分析
  • 做我女朋友网站p0rn视频郑州免费做网站
  • 软件工程师招聘简章pdfseo营销技巧
  • 西安正规网站建设报价东营网站建设制作
  • 网站怎么做footer青岛seo计费