返回頂部
關閉軟件導航
位置:首頁 > 技術分享 > SEO優(yōu)化>從四分鐘到兩秒我的客戶端性能優(yōu)化實踐

很近跟售后經(jīng)理吃飯,他跟我再次談起兩年前為公司臨時寫的一個客戶端,仍然非常激動的跟我說,這個客戶端完爆了公司其他版本的客戶端,包括很老的Delphi寫的,Asp.Net寫的,以及很新的Wpf寫的客戶端。無論是多么大的界面(集成的機房多),這個系統(tǒng)都是瞬間打開,而且運行非常穩(wěn)定,一旦成功部署之后基本沒有任何問題。

這個版本的客戶端僅僅只是一個臨時替代的版本:原來的Delphi客戶端實在是太慢了,在大型的數(shù)據(jù)中心監(jiān)控中需要4~5分鐘才能進入主監(jiān)控界面,而asp.net版本的客戶端又經(jīng)常存在不穩(wěn)定的情況(IE瀏覽器不支持7*24小時的異步刷新),很新的Wpf客戶端又還在設計階段,于是臨危受命決定開發(fā)一個臨時過渡版本,當時也只是開發(fā)了一個月,沒想到竟然如此成功,至今仍讓我們的售后部門津津樂道。這中間其實沒有太多高深的技術,但是卻有很多的開發(fā)技巧以及編程的思想。我至今仍然看到很多人都在犯這么一些簡單的錯誤(例如VS2021工具箱的加載項),導致他們的系統(tǒng)非常緩慢,但是他們卻總是抱怨是編程語言的問題,是windows系統(tǒng)的問題,是機器的性能不行……

我決定把我的一些實踐經(jīng)驗跟大家分享:不是非得你有多么牛逼的技術,才能做出一個穩(wěn)定快速的系統(tǒng),更多的時候,它取決于你是否有一個產(chǎn)品的意識,是否讓你的軟件真正貼近用戶。

系統(tǒng)界面與功能

先來看看原來的系統(tǒng)界面是怎樣子的:

其功能如下,我新寫的客戶端增加了支持生成OCX控件的功能:

整個系統(tǒng)的物理架構是這樣的:

原系統(tǒng)存在的問題

加載主頁面慢

隨著界面數(shù)量的增加,會需要更多的加載時間

隨著地點和設備的增加,加載會需要更多的時間

頁面之間切換卡

從四分鐘到兩秒我的客戶端性能優(yōu)化實踐

數(shù)據(jù)顯示慢

地點的報警狀態(tài)顯示不正確且存在延遲

報警并發(fā)較多時卡頓更嚴重

客戶端性能優(yōu)化的基本手法

我們來看看通過一些什么手法能夠解決原來的系統(tǒng)存在的這些問題。

按需獲取

大部分的情況下,我們其實所能看到的東西都是極其有限的,無論系統(tǒng)是多么龐大,功能多么的豐富,其實呈現(xiàn)給用戶的都是極其有限的。

監(jiān)控界面的按需獲取

前面說了,監(jiān)控主界面里的界面都是組態(tài)的,是由工程師拖拉控件上去實現(xiàn)的,大家也看到上面圖形還算豐富,主要是使用了大量的圖片,因此我們系統(tǒng)中在保存這些組態(tài)界面的時候,同時也保存了界面圖片的字節(jié)流。大型的數(shù)據(jù)中心由于界面較多,這些界面加起來是可能會超過1G大小的。這么大的界面,假如都是直接加載到界面中,首先就要費不少的時間,即使是在內(nèi)網(wǎng)的情況下,假設你網(wǎng)絡能夠1s下載20M左右,也要50秒,接近1分鐘,遇上網(wǎng)絡高峰,花個1~2分鐘并不希罕。

我們是否有必要把所有界面都加載進來呢,當然沒有。我們只需加載第一個界面,其他界面在需要的時候(用戶點擊或者發(fā)生告警需要跳轉的時候)才加載,這樣我們的速度里面就提升了,這就是按需加載!

當然說的輕便,實際做的會有很多問題。比如,如何實現(xiàn)不實現(xiàn)頁面又能知道該頁面是否告警(必須解析每個界面上的控件,才能知道某個界面包含了哪些控件,才知道監(jiān)控指標告警在哪個界面上)?

我的步驟如下:

保存界面的時候,把界面上的控件的Id列表存儲到設備記錄中

加載時只加載所有的設備記錄(名稱+控件Id列表)

把對應的信息附加到樹形節(jié)點中

根據(jù)對應的樹形節(jié)點的告警信息在需要顯示界面時生成界面

按需刷新界面上的數(shù)據(jù)

做監(jiān)控系統(tǒng),除了告警頁面必須實時通知到客戶外,監(jiān)控數(shù)據(jù)界面,其實只需展示當前顯示頁面的數(shù)據(jù)即可。

怎么做呢,我們可以提供一個單獨的程序來治理所有接收到的數(shù)據(jù),然后再提供一個獲取當前數(shù)據(jù)的接口給客戶端,具體請看下面更改的架構。

有些人可能會疑問,為什么不直接在采集器中提供這個接口呢?因為這是組態(tài)界面,界面上的控件要取哪個采集器的數(shù)據(jù)是未知的,所以把數(shù)據(jù)放在一起統(tǒng)一治理會更加方便。而且采集器可以7*24小時工作,而客戶端是經(jīng)常要打開關閉的……

VS2021中的反例

假如用過VS2021開發(fā)自定義的Winform組件,那么大家對它的工具箱加載自定義組件這個功能肯定印象深刻,每次選擇添加項,然后選擇自定義控件dll的時候,都非常痛苦,尤其我電腦比較忙而又裝了不少插件的情況下,為了一個非常簡單的功能,我需要花費4分多的時間來打開那個選擇文件的界面,這個界面加載了一大堆我絕大多數(shù)時候都用不上的COM組件,我實在沒法想象開發(fā)這個功能的程序猿是怎么想的。還好,在VS2021中微軟總算是改進了這個功能,但是做得還不夠。按我的想法,完全可以把COM組件部分異步加載,給出正在加載的提示即可,可以立即顯示“選擇”按鈕,這樣體驗性立即上升了一個層次。

延遲加載

延遲加載是指用到的時候,再去進行實際的構建。

音命袍賽串適上營降但顛顫惕向銹羅駐源半十犬居底蛋懼逃腿走覺寄敗化幸惱頑檔孩勾繁樣點腎胳災春穴交供立稍辱巨歇近濟襲毀稱槐礙脫儀博慧板批妄潛賺阻財宋君催吐胞謠能閑名桿衛(wèi)速醉從廢儀守未萬箱手耳辯壁早注同躍嘗及其導攪終冒宋皺特戒鉆蜜路殿彈忙世方冊枝競取賠膨貍勾恒蛙查折幟康古懂橫位營擋洋戒米毯愛農(nóng)匹臉槍憲丈扛捷丑棍口增四億蓄效瑞界援防衛(wèi)廠態(tài)忽影笑廣倒絕殃尾昂細纏境編蘇香幸肢幅以功蹄什章史娛努潮借蒸棄銀銷性褲瞇姨彈茫蠟昏尸默刊葛采凱館傲設串7H。從四分鐘到兩秒我的客戶端性能優(yōu)化實踐。關鍵詞霸屏 認準樂云seo,成都seo搜索關鍵詞公司,seo 方法 2018,seo做網(wǎng)絡廣告,seo醫(yī)療推廣

如果您覺得 從四分鐘到兩秒我的客戶端性能優(yōu)化實踐 這篇文章對您有用,請分享給您的好友,謝謝!

主站蜘蛛池模板: 国产AV一区二区三区无码野战| 国产成人无码精品久久二区三区| 亚洲最大天堂无码精品区| 久久久无码一区二区三区| 亚洲AV无码AV吞精久久| 国产AV无码专区亚洲AV琪琪 | 国产AV无码专区亚洲AV漫画 | 无码精品久久久久久人妻中字| 无码夫の前で人妻を侵犯| 久久无码一区二区三区少妇| 久久无码人妻一区二区三区午夜| 亚洲a无码综合a国产av中文 | 无码精品国产VA在线观看| 日韩AV无码不卡网站| 制服在线无码专区| 久久久久亚洲精品无码系列| 久久亚洲AV无码西西人体| 亚洲精品无码永久在线观看男男| 免费无码又爽又刺激网站直播| 丰满少妇被猛烈进入无码| 67194成l人在线观看线路无码| 日韩人妻无码一区二区三区久久99| 无码粉嫩虎白一线天在线观看| 无码av免费一区二区三区| 无码人妻熟妇AV又粗又大| 亚洲大尺度无码专区尤物| 久久无码精品一区二区三区 | 无码乱肉视频免费大全合集| 免费看国产成年无码AV片| 日韩精品少妇无码受不了| 亚洲AV无码专区日韩| 无码成人AAAAA毛片| 内射人妻无码色AV天堂| 亚洲另类无码专区丝袜| 久久久国产精品无码一区二区三区| 亚洲中文字幕久久精品无码2021| 人妻无码αv中文字幕久久琪琪布| 无码人妻精品一区二区三区在线| 中文字幕乱妇无码AV在线| 高潮潮喷奶水飞溅视频无码| 亚洲人成人无码.www石榴|