• django中的懒加载机制


    懒加载在前端中的意义:

    懒加载的主要目的就是作为服务器前端的优化,减少请求次数或者延迟请求数。

    实现原理: 先加载一部分数据,当触发某个条件时利用异步加载剩余的数据,新得到的数据不会影响原有数据的显示,同时最大幅度的减少服务器端资源耗用。

    实现方式:1. 第一种时纯粹的延迟加载,使用setTimeOut和setinterval进行加载延迟。

         2. 第二种是条件加载,符合某种条件,或是触发某些事件才开始异步加载。

            3. 第三种是可视区加载,仅记载用户的可视区域,这个主要监控滚动条来实现,一般会根据用户看到某些图片前的一段距离时开始进行加载,这样就可保证用户下拉时正好可以看到加载完毕后的图片或是内容。

    django中的懒加载的方法:

    1.settings懒加载

    配置文件上可能会用到其他模块,那么就有可能导致循环引用。django的配置采用了懒加载机制,或者说是延迟加载。根据from django.conf import settings查看得知:

    所谓的延迟加载,就是在需要用到的时候在加载。一般手段有代理类,线程。计时器。Django中的lazyObject代理类。加载函数是_setup函数,当获取属性时才会去加载。

    settings = LazySettings()
    
    class LazySettings(LazyObject):
        def _setup(self, name=None):
            settings_module = os.environ.get(ENVIRONMENT_VARIABLE)
            self._wrapped = Settings(settings_module)
    
        def __getattr__(self, name):
            if self._wrapped is empty:
                self._setup(name)
            return getattr(self._wrapped, name)

    LazySettings继承自LazyObjects类,他重写了__getattr__和__setattr__方法,那么在调用settings.INSTALLED_APPS时,会通过自定义的__getattr__方法实现。从中可以看出所有属性都是从self._wrapped也就是Setting(setting_module)这个实例中取得的。

    2. django ORM默认懒加载

    django orm 默认使用的懒加载,即使用的时候采取访问数据库,且每次默认取最少的数据,当然这样有好处也有坏处。

    好处: 当你查询是,会一次全部查询把所有数据给你返回。

    坏处: 会导致频繁的查询数据库。如:涉及到外键的时候,会先去取需要的数据集,再取外键的数据集,等于访问了两次数据库,那取n条数据就访问了n*n次数据库。

    天王盖地虎,全考985。

    万丈高楼平地起,成功只能靠自己。

    星宿老仙,法力无边,祝我高考,横扫万千。

    不学习,如何养活你的众多女人。

    不会吧,不会吧,真的有人考不上本科。

    今天是2020年高考的日子,祝莘莘学子,高考必胜。

  • 相关阅读:
    idea 管理java 多module的工程
    协程与函数线程异步的关系
    HDU 5640 King's Cake【模拟】
    逻辑运算
    Silverlight 学习笔记——布局 Evil 域 博客园
    ExtJS 日期格式问题
    偏方收藏(此信息为本人收藏,安全性无法验证,使用后产生的一些后果自负)
    form和column:extJS的布局
    Sqlserver 通用存储过程分页
    Ext中TreePanel控件和TabPanel控件搭配测试
  • 原文地址:https://www.cnblogs.com/miss103/p/13261274.html
Copyright © 2020-2023  润新知