博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django缓存基于类的视图
阅读量:7213 次
发布时间:2019-06-29

本文共 1034 字,大约阅读时间需要 3 分钟。

 

引子:

  有些场景下由于数据库中的数据很长时间内都不会发生变化,如果每次调用view都要去查询一次数据库的话,明显是多做了一些无用

  工的;django中可以通过装饰器方便的实现view的缓存。

 

为什么class-based-view中的方法不能直接装饰:

   由于class-based-view中的方法与function-based-view在内部处理上有着本质上的不同、所以不能直接装饰方法;要通过method_decorator来适配

 

怎么做:

  1、要缓存首先就要解决把数据缓存在哪里的问题;常见的可以用来保存缓存对象的地方有“内存”,“数据库”,“文件系统” 等等..... 下面以把数据缓存

  到文件内存为例讲解django应该怎么配置。缓存的目标位置是通过配置来决定的、

CACHES = {    'default': {        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',    }}

  

  2、给方法增加装饰、以把它标记为是要缓存的对象、示例代码如下:

from django.shortcuts import renderfrom django.views import Viewfrom django.http import HttpResponsefrom django.utils.decorators import method_decoratorfrom django.views.decorators.cache import cache_page# Create your views here.class HelloPage(View):    @method_decorator(cache_page(60*60*24))    def get(self,request):        print("enter HelloPage.get")        return HttpResponse('Hello world ...')

   对于class-based-veiw来说不能直接通过cache_page来装饰了、要通过method_decorator来适配一下。

 

对比:

  1、没有缓存的情况下每一次访问HelloPage.get方法都要被执行

      

 

    2、有缓存的情况下HelloPage.get方法只执行一次

    

 

 

 

 

-----

转载地址:http://wfyym.baihongyu.com/

你可能感兴趣的文章
ubuntu开机进入字符界面方法
查看>>
硬盘常见故障
查看>>
python 自动下载网站相关附件
查看>>
centos 6.5安装视频解码器
查看>>
Freeradius, 执行 radtest, 出现错误
查看>>
Android启动出现白屏的解决办法(theme)
查看>>
设计模式之单例设计模式
查看>>
LVS DR模型详解
查看>>
python 练习-登录接口
查看>>
pt-heartbeat 监测RDS延迟
查看>>
使用IDEA导入工程时无反映的问题处理
查看>>
python selenium爬取kuku漫画
查看>>
VTP 导致的网络故障
查看>>
puppet自动化运维之package资源
查看>>
细说Java的继承
查看>>
数据库9:联结表 高级联结 组合查询 全文本搜索
查看>>
IDC发布2018年中国金融行业十大预测
查看>>
商业K3控制点及操作规范四
查看>>
文件夹命令
查看>>
全静态标准库链接方式
查看>>