之前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...