懶加載在前端中的意義:
懶加載的主要目的就是作為服務器前端的優化,減少請求次數或者延遲請求數,
實作原理: 先加載一部分資料,當觸發某個條件時利用異步加載剩余的資料,新得到的資料不會影響原有資料的顯示,同時最大幅度的減少服務器端資源耗用,
實作方式: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年高考的日子,祝莘莘學子,高考必勝,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95154.html
標籤:Python
上一篇:設定字體樣式
