关于Django的缓存设置

关于Django的缓存设置

1.关于缓存
在不断学习中不断总结,首先理解什么时Django的缓存机制,动态网站的特点即是动态的。每次用户请求页面时,Web服务器都会进行各种计算 ,例如从数据库查询到模板呈现再到业务逻辑 ,最终形成访问者看到的页面。从处理开销的角度来看,这比静态的文件读取文件系统要昂贵得多。
对于大多数Web应用程序来说,这种开销并不是什么大问题。大多数Web应用程序只是中小型网站。但对于中到高流量的站点,尽可能减少开销是至关重要的。
这就是缓存的用武之地。

2,在Django中如何简单实现
在这给大家演示一下在drf中缓存功能如何实现,我们可以下载一个drf-extensions
在这里插入图片描述

#导入第三方包
from rest_framework_extensions.cache.mixins import CacheResponseMixin
#直接在view中进行配置
class GoodsListViewSet(CacheResponseMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
	pass

3.关于缓存功能在数据库上的实现
这里以redis为例,如果我们将数据缓存到redis中,会产生一个问题,我们保存数据是以json格式还是以html格式?
第二,不同的用户使用不同的过滤器产生的数据也不同,也就是用户的请求参数不同,缓存数据也不同
这里我们可以安装Django-redis来帮我们解决问题
https://django-redis-chs.readthedocs.io/zh_CN/latest/

4.api限速
随着我们的web项目越来越大,对ip访问限速十分有必要,api限速主要针对爬虫,无节制的爬虫会对我们的服务器造成巨大压力,避免误伤我们也对对访问实行时间限制,好在drf里面自带throttle,我们可以直接配置:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ),
     'DEFAULT_THROTTLE_CLASSES': (
         'rest_framework.throttling.AnonRateThrottle', #匿名限速
         'rest_framework.throttling.UserRateThrottle'  #用户限速
     ),
     'DEFAULT_THROTTLE_RATES': {
         'anon': '2/minute',
         'user': '3/minute'
     }
}

这里为什么需要对User限速?因为爬虫会模拟用户登录。最后我们将AnonRateThrottle或UserRateThrottle配置到ViewSet中即可实现访问限速功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值