性能優(yōu)化

ajax優(yōu)化

1镶殷、緩存ajax:
a、異步并不等于及時(shí)
2微酬、請求使用GET
a绘趋、- 當(dāng)使用XMLHttpRequest時(shí),而URL長度不到2K颗管,可以使用GET請求數(shù)據(jù)陷遮,GET相比POST更快速。垦江、

b帽馋、POST類型請求要發(fā)送兩個(gè)TCP數(shù)據(jù)包。
①先發(fā)送文件頭
②再發(fā)送數(shù)據(jù)。

d绽族、GET
①類型請求只需要發(fā)送一個(gè)TCP數(shù)據(jù)包姨涡。
②取決于你的cookie數(shù)量。

cookie

1项秉、減少cookie的大小
2绣溜、使用無cookie的域
①比如圖片CSS等靜態(tài)文件放在靜態(tài)資源服務(wù)器上并配置單獨(dú)域名慷彤,客戶端請求靜態(tài)文件的時(shí)候娄蔼,減少COOKIE反復(fù)傳輸時(shí)對主域名的影響。

dom優(yōu)化

1底哗、優(yōu)化節(jié)點(diǎn)修改岁诉。
使用cloneNode在外部更新節(jié)點(diǎn)然后再通過replace與原始節(jié)點(diǎn)互換凛澎。

var orig = document.getElementById('container');
var clone = orig.cloneNode(true);
var list = ['foo', 'bar', 'baz'];
var content;
for (var i = 0; i < list.length; i++) {
    content = document.createTextNode(list[i]);
    clone.appendChild(content);
}
orig.parentNode.replaceChild(clone, orig);

2泉瞻、優(yōu)化節(jié)點(diǎn)添加

多個(gè)節(jié)點(diǎn)插入操作脐区,即使在外面設(shè)置節(jié)點(diǎn)的元素和風(fēng)格再插入企软,由于多個(gè)節(jié)點(diǎn)還是會引發(fā)多次reflow麸折。

a借笙、優(yōu)化的方法是創(chuàng)建DocumentFragment储笑,在其中插入節(jié)點(diǎn)后再添加到頁面孕暇。
如JQuery中所有的添加節(jié)點(diǎn)的操作如append炼列,都是最終調(diào)用DocumentFragment來實(shí)現(xiàn)的只搁,

createSafeFragment(document) {
        var list = nodeNames.split("|"),
               safeFrag = document.createDocumentFragment();
        if (safeFrag.createElement) {
            while (list.length) {
                safeFrag.createElement(
                    list.pop();
                );
            };
        };
    return safeFrag;
};

3、優(yōu)化css樣式轉(zhuǎn)換

如果需要?jiǎng)討B(tài)更改CSS樣式俭尖,盡量采用觸發(fā)reflow次數(shù)較少的方式氢惋。

a、 如以下代碼逐條更改元素的幾何屬性稽犁,理論上會觸發(fā)多次reflow

element.style.fontWeight = 'bold' ;
element.style.marginLeft= '30px' ; 
element.style.marginRight = '30px' ;

b焰望、可以通過直接設(shè)置元素的className直接設(shè)置,只會觸發(fā)一次reflow

element.className = 'selectedAnchor' ;

4已亥、減少dom元素?cái)?shù)量

a熊赖、 在console中執(zhí)行命令查看DOM元素?cái)?shù)量。

`document.getElementsByTagName( '*' ).length`

b虑椎、正常頁面的DOM元素?cái)?shù)量一般不應(yīng)該超過1000

c秫舌、DOM元素過多會使DOM元素查詢效率,樣式表匹配效率降低绣檬,是頁面性能最主要的瓶頸之一足陨。

5、dom操作優(yōu)化

a娇未、DOM操作性能問題主要有以下原因墨缘。
①、DOM元素過多導(dǎo)致元素定位緩慢。
②镊讼、大量的DOM接口調(diào)用宽涌。

JAVASCRIPT和DOM之間的交互需要通過函數(shù)API接口來完成,造成延時(shí)蝶棋,尤其是在循環(huán)語句中卸亮。

③、DOM操作觸發(fā)頻繁的reflow(layout)和repaint玩裙。
④兼贸、layout發(fā)生在repaint之前,所以layout相對來說會造成更多性能損耗吃溅。
reflow(layout)就是計(jì)算頁面元素的幾何信息溶诞。
repaint就是繪制頁面元素。
⑤决侈、對DOM進(jìn)行操作會導(dǎo)致瀏覽器執(zhí)行回流reflow螺垢。
b、解決方案

⑥赖歌、
⑦枉圃、
⑧、
⑨庐冯、
⑩孽亲、

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肄扎,隨后出現(xiàn)的幾起案子墨林,更是在濱河造成了極大的恐慌,老刑警劉巖犯祠,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旭等,死亡現(xiàn)場離奇詭異,居然都是意外死亡衡载,警方通過查閱死者的電腦和手機(jī)搔耕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痰娱,“玉大人弃榨,你說我怎么就攤上這事±嬲觯” “怎么了鲸睛?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坡贺。 經(jīng)常有香客問我官辈,道長箱舞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任拳亿,我火速辦了婚禮晴股,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肺魁。我一直安慰自己电湘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布鹅经。 她就那樣靜靜地躺著寂呛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞬雹。 梳的紋絲不亂的頭發(fā)上昧谊,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天刽虹,我揣著相機(jī)與錄音酗捌,去河邊找鬼。 笑死涌哲,一個(gè)胖子當(dāng)著我的面吹牛胖缤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阀圾,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哪廓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了初烘?” 一聲冷哼從身側(cè)響起涡真,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肾筐,沒想到半個(gè)月后哆料,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吗铐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年东亦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唬渗。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡典阵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镊逝,到底是詐尸還是另有隱情壮啊,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布撑蒜,位于F島的核電站歹啼,受9級特大地震影響充坑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜染突,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一捻爷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧份企,春花似錦也榄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骂远,卻和暖如春囚霸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背激才。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工拓型, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瘸恼。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓劣挫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親东帅。 傳聞我的和親對象是個(gè)殘疾皇子压固,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

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

  • AJax 優(yōu)化 緩存 Ajax 請求盡量使用GET, 僅取決于cookie數(shù)量 Cookie 優(yōu)化 減少Cooki...
    KeKeMars閱讀 9,354評論 5 89
  • 性能優(yōu)化的話大致有以下幾個(gè)部分:加載優(yōu)化圖片優(yōu)化CSS優(yōu)化腳本優(yōu)化渲染優(yōu)化 加載優(yōu)化 1.減少http請求 基本原...
    進(jìn)擊的蒸汽機(jī)閱讀 401評論 0 0
  • 前端是龐大的,包括 HTML靠闭、 CSS帐我、 Javascript、Image 愧膀、Flash等等各種各樣的資源拦键。前端優(yōu)...
    build1024閱讀 878評論 0 2
  • 本文首發(fā)于kmac007.me 資源壓縮合并,減少HTTP請求 由于HTTP是無狀態(tài)協(xié)議扇调,意味著每次HTTP請求都...
    kmac007閱讀 563評論 1 1
  • 讓我再看你一遍矿咕,從南到北……我知道,那些夏天就像青春一樣回不來……讓我困在城市里紀(jì)念你……讓我再聽一遍狼钮,最美的那一...
    張小風(fēng)閱讀 661評論 8 2