django後台載入從15秒優化到1秒的過程小記

2021-09-26 16:24:09 字數 1345 閱讀 4568

之前django的後台管理的管理的專案很慢,開啟個頁面得花十幾秒甚至二十秒,經過不斷努力優化,終於優化到1秒左右了,很舒服。

先定位慢的主要原因,首先有個表大概有200萬條資料,而且機器每天不停地寫入,增長很快。再利用diango-debug-*******很方便檢視出哪些東西耗時,主要檢視各種耗時的sql語句。

主要耗時的部分包括:django分頁,list_filter,date_hierarchy,有個字段呼叫第三方介面

list_filter,date_hierarchy優化參見:

django分頁優化參見:

進行完上面的優化後,頁面載入時間大概需要6秒。

之後又將機器和編輯用的表分開,編輯的表很小,這樣其實前面的sql耗時幾乎可以忽略了。但是頁面載入時間仍然需要6秒左右。

最後又定位了呼叫外部介面的乙個字段需要四五秒。

因為欄位是同步呼叫的,每個列表頁二十個,每個呼叫大概0.2秒。加起來時間就久了。最終我的解決方法就是利用多執行緒同時請求介面獲取資料。

from django.contrib.admin.views.main import changelist

class changelistadmin(changelist):

def get_results(self, request):

thread_list =

#get all of model object from current page list

super(changelistadmin, self).get_results(request)

for model in self.result_list:

t = thread(target=self.get_ctr, args=(model,))

t.start()

for t in thread_list:

t.join()

因為重寫了changelist,所以admin.py中注意重寫get_changelist方法,用我們自己重寫的changelistadmin類

def get_changelist(self, request, **kwargs):

return changelistadmin

做完這個優化後,呼叫介面的時間縮小到1秒多了。

但是有時候呼叫介面會timeout,索性直接不調介面直接查詢資料庫了,應該是56核 256g記憶體的伺服器效能比較強勁,直接查資料庫後獲取這20個字段的時間基本縮小到0.5秒內了。

現在整個頁面開啟只需要1秒左右了。

django後台無法載入css樣式

專案做著突然出現這個問題,找了半天解決方案都不成功。最後終於讓我找到問題所在 發現是css,js檔案304導致無法載入顯示問題 搜尋到大神的解答 這種情況一般會在windows系統下出現 前台 後台如果無法載入css等樣式。建議通過此辦法來解決 這是因為你安裝的某些ide 或者其他更改了登錄檔導致的...

django 載入html與form 前後臺互動

一 載入html 1.編輯scrapyweb urls.py from django.conf.urls import url urlpatterns url r index from django.shortcuts import render to response def index req ...

django 後台從富文字提取純文字

很多時候我們都會用富文字,比如說在版權區 部落格文章編輯時等等。但是如果我們要做乙個搜尋的功能,去從富文字中查詢關鍵字,就需要將富文字中的文字了。但是 django 並沒有專門函式去做。這個時候我們就需要使用正則或者是提取前端的過濾器 striptags 方法。import re content j...