django存儲光交業(yè)務(wù)管理系統(tǒng)-菜鳥開發(fā)日記第九節(jié)-系統(tǒng)開發(fā)遇到的坑

性能篇:
針對模版內(nèi)的模版語言璃赡,如果涉及的表太多沃饶,會導(dǎo)致特別慢,我剛開發(fā)打開一個存儲的詳細(xì)頁面幾乎用啦40秒,都是不可忍受的時間热芹。



最開是是網(wǎng)頁一次性全部展示秤掌,由于表之間關(guān)聯(lián)性太強(qiáng)恒傻,導(dǎo)致打開一個網(wǎng)頁結(jié)果運(yùn)行啦幾千條sql語句澈驼。果然是慢到極點(diǎn)。
模版語言使用太過耘沼,形成3表或者4表的查詢結(jié)構(gòu)极颓。比如:

 {% for i in data%}
                        <tr>
                            <td>{{ i.index }}</td>
                            <td>{{ i.slot }}</td>
                            <td>{{ i.port }}</td>
                            <td class="am-hide-sm-only">{{ i.speed }}</td>
                            <td class="am-hide-sm-only">{{ i.type }}</td>
                            <td class="am-hide-sm-only">
                                {% if  i.wwn_set.all|length > 0 %}
                                    {% for k in  i.wwn_set.all  %}
                                        {{ k.wwn }}
                                    {% endfor %}
                                {% endif %}
                            </td>
                            <td class="am-hide-sm-only">{{ i.crc_err }}</td>
                            <td class="am-hide-sm-only">{{ i.tx }}</td>
                            <td class="am-hide-sm-only">{{ i.rx }}</td>
                            <td class="am-hide-sm-only">{{ i.TX_Power }}</td>
                            <td class="am-hide-sm-only">{{ i.RX_Power }}</td>
                            <td class="am-hide-sm-only">
                                {% if  i.wwn_set.all|length > 0 %}
                                    {% for k in  i.wwn_set.all  %}
                                        <a >{{ k.host_wwn }}</a>
                                    {% endfor %}
                                {% endif %}
                            </td>
                            <td class="am-hide-sm-only">
                                {% if  i.wwn_set.all|length > 0 %}
                                    {% for k in  i.wwn_set.all  %}
                                        <a data-am-popover="{content: '{{ k.wwnname }}{{ k.hostgroup_wwn }}', trigger: 'hover focus'}">{{ k.storage_wwn }}</a>
                                    {% endfor %}
                                {% endif %}
                            </td>
                        </tr>
                    {% endfor %}

通過這種方式的話基本上是作死,因該善用values:通過這個進(jìn)行多表查詢群嗤,效率比以上的強(qiáng)太多啦菠隆。

    st_log = models.Doment.objects.values("id","dotime","storage__ST_sn","storage__ST_ip","storage__ST_prodname","storage__ST_prodect").filter(
        Q(storage__ST_prodname="富士通") | Q(storage__ST_prodname="日立") | Q(storage__ST_prodname="華為") | Q(
            storage__ST_prodname="EMC"))

通過以上方案,速度基本達(dá)到啦5秒以內(nèi)打開網(wǎng)站狂秘,但還是太慢骇径。
再次采用異步的方式進(jìn)行體現(xiàn)。
將所以的菜單進(jìn)行異步獲取者春,在views.py里面直接將html傳回去破衔。

def stroage_mess_host_rili_ajax(request):
    ret = {"status": True, "error": None, "data": None}
    if request.method == "POST":
        id = request.POST["id"]
        obj = models.STHOST.objects.filter(storage_id=id)
        html =""
        for i in obj:
            hostgoupname = ""
            for k in i.sthostgroup_set.all():
                hostgoupname += str(k.hostgroupname)
            wwn = ""
            sanwwn = ""
            rx = ""
            tx =""
            host = ""
            hostapp = ""
            for k in i.wwn_set.all():
                wwn += str(k.wwn) + "<br> "
                if k.Sanport_wwn:
                    sanwwn += str(k.Sanport_wwn.san) + " " + str(k.Sanport_wwn.slot) + "-" + str(k.Sanport_wwn.port) + "<br> "
                if k.Sanport_wwn:
                    rx += str(k.Sanport_wwn.rx) + "<br> "
                    tx += str(k.Sanport_wwn.tx) + "<br> "
                if k.host_wwn:
                    host += str(k.host_wwn) + "<br> "
                    hostapp += str(k.host_wwn.app) + "<br> "
            html += "<tr>" + \
                    "<td>" + str(i.id) +"</td>"+ \
                    "<td>" + str(i.hostname) +"</td>"  + \
                    "<td>" + str(i.Notes) +"</td>"  + \
                    "<td>" + wwn +"</td>"  + \
                    "<td>" + sanwwn +"</td>"  + \
                    "<td>" + rx +"</td>"  + \
                    "<td>" + tx +"</td>"  + \
                    "<td>" + host +"</td>"  + \
                    "<td>" + hostapp +"</td>"  + \
                    "</tr>"
    ret = {"status": True, "error": None, "data": html}

html內(nèi)文件。

  $("#stroage_mess_work").click(function () {
            var id = $("#storage_id").text()
            $("#storage_work").empty()
            $('#waitting').modal({backdrop: 'static', keyboard: false},'toggle')
            $.ajax({
                url: "{% url "storage_work_ajax" %}",
                type: 'POST',
                data:{"id":id},
                success: function(data){
                    var obj = JSON.parse(data);
                    if(obj.status){
                        $("#storage_work").append(obj.data)
                        console.log(obj.data)
                        $('#waitting').modal('hide')
                    }else{
                        alert("error")
                        $('#waitting').modal('hide')
                    };
                }
            });
        });

最終通過以上方案钱烟,網(wǎng)頁基本上是秒開晰筛,幾乎不用等待嫡丙,異步的話慢點(diǎn),但也能5秒內(nèi)打開读第。
明天繼續(xù)



目錄

django開發(fā)之存儲光交業(yè)務(wù)管理系統(tǒng)第一節(jié)-序言

django存儲光交業(yè)務(wù)管理系統(tǒng)第二節(jié)-pyhon腳本的編寫

django存儲光交業(yè)務(wù)管理系統(tǒng)第三節(jié)-系統(tǒng)初步分析需求

django存儲光交業(yè)務(wù)管理系統(tǒng)第四節(jié)-光交數(shù)據(jù)庫的設(shè)計

django存儲光交業(yè)務(wù)管理系統(tǒng)第五節(jié)-存儲數(shù)據(jù)庫的設(shè)計

django存儲光交業(yè)務(wù)管理系統(tǒng)第六節(jié)-系統(tǒng)的架構(gòu)流程圖

django存儲光交業(yè)務(wù)管理系統(tǒng)第七節(jié)-程序的啟動

django存儲光交業(yè)務(wù)管理系統(tǒng)-菜鳥開發(fā)日記第八節(jié)-目錄的結(jié)構(gòu)說明

django存儲光交業(yè)務(wù)管理系統(tǒng)-菜鳥開發(fā)日記第九節(jié)-系統(tǒng)開發(fā)遇到的坑

django存儲光交業(yè)務(wù)管理系統(tǒng)-菜鳥開發(fā)日記第10節(jié)-業(yè)務(wù)圖表需求

………………………………………………………………

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曙博,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子怜瞒,更是在濱河造成了極大的恐慌父泳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吴汪,死亡現(xiàn)場離奇詭異惠窄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)漾橙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門杆融,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人近刘,你說我怎么就攤上這事擒贸。” “怎么了觉渴?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長徽惋。 經(jīng)常有香客問我案淋,道長,這世上最難降的妖魔是什么险绘? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任踢京,我火速辦了婚禮,結(jié)果婚禮上宦棺,老公的妹妹穿的比我還像新娘瓣距。我一直安慰自己,他們只是感情好代咸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布蹈丸。 她就那樣靜靜地躺著,像睡著了一般呐芥。 火紅的嫁衣襯著肌膚如雪逻杖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天思瘟,我揣著相機(jī)與錄音荸百,去河邊找鬼。 笑死滨攻,一個胖子當(dāng)著我的面吹牛够话,可吹牛的內(nèi)容都是我干的蓝翰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼女嘲,長吁一口氣:“原來是場噩夢啊……” “哼霎箍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起澡为,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤漂坏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后媒至,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顶别,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年拒啰,在試婚紗的時候發(fā)現(xiàn)自己被綠了驯绎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡谋旦,死狀恐怖剩失,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情册着,我是刑警寧澤拴孤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站甲捏,受9級特大地震影響演熟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜司顿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一芒粹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧大溜,春花似錦化漆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锨苏,卻和暖如春疙教,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伞租。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工贞谓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人葵诈。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓裸弦,卻偏偏與公主長得像祟同,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子理疙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容