亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 網(wǎng)站 > 網(wǎng)頁(yè)設(shè)計(jì) > 正文

淺談前端網(wǎng)絡(luò)、JavaScript優(yōu)化以及開發(fā)小技巧

2024-08-30 08:36:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、網(wǎng)絡(luò)優(yōu)化

YSlow 有23條規(guī)則。這幾十條規(guī)則最主要是在做消除或減少不必要的網(wǎng)絡(luò)延遲,將需要傳輸?shù)臄?shù)據(jù)壓縮至最少。

1)合并壓縮CSS、JavaScript、圖片,靜態(tài)資源CDN緩存

通過構(gòu)建工具Gulp ,可以在開發(fā)的時(shí)候就將合并壓縮的事情一起做掉。

之所以要做合并壓縮是因?yàn)椋篐TTP 1.x不允許一個(gè)連接上的多個(gè)響應(yīng)數(shù)據(jù)交錯(cuò)到達(dá)(多路復(fù)用),因而一個(gè)響應(yīng)必須完全返回后,下一個(gè)響應(yīng)才會(huì)開始傳輸。

也就是說(shuō)即使客戶端同時(shí)發(fā)送了兩個(gè)請(qǐng)求,而且CSS資源先準(zhǔn)備就緒,服務(wù)器也會(huì)先發(fā)送HTML響應(yīng),然后再交付CSS。

使用CDN是為了讓用戶訪問的時(shí)候能用最近的資源,減少來(lái)回傳輸時(shí)間。

HTTP2.0改進(jìn)了HTTP1.x很多方面。

2)CSS放頂部,JavaScript放底部

CSS可以并行下載,而JavaScript加載之后會(huì)造成阻塞。

但凡事還是會(huì)有例外,如果把行內(nèi)腳本放在樣式表之后,會(huì)明顯地延遲資源的下載(結(jié)果是樣式表下載完成并且行內(nèi)腳本執(zhí)行完畢時(shí),后續(xù)資源才能開始下載)。

這是因?yàn)樾袃?nèi)腳本可能含有依賴于樣式表中樣式的代碼,比如document.getElementsByClassName()。

<head>  <link rel="stylesheet" href="css/all-normal.css" type="text/css" /></head><body>  <div id="content"></div>  <script>    var content = '';    for(i=1; i<1000000; i++)        content += '寫入頁(yè)面';    document.getElementById('content').innerHTML = content;  </script>  <img src="images/ui.png" /></body>

下面通過Chrome的工具查看下:

3)優(yōu)化DNS解析,減少重定向

在做一個(gè)“女神評(píng)選活動(dòng)”的時(shí)候,需要在微信中訪問能夠獲取用戶的openid,微信獲取用戶基本信息是需要經(jīng)過幾個(gè)步驟的:

先獲取code,再通過code獲取openid,最后再跳轉(zhuǎn)訪問靜態(tài)頁(yè)面。

由于公司將業(yè)務(wù)分成了多個(gè)小組,所以短短的三步其實(shí)需要三個(gè)小組配合,需要重定向多個(gè)域名。

下圖是未優(yōu)化前的瀑布圖,但不是最壞情況,有時(shí)候訪問到靜態(tài)頁(yè)面需要經(jīng)過10多秒,完全不能接受,下圖中會(huì)跳轉(zhuǎn)4個(gè)域名:

后面不跳index那個(gè)域名,直接跳轉(zhuǎn)到微信操作域名,減少一個(gè)域名的跳轉(zhuǎn),各小組代碼再做優(yōu)化,但效果還是不理想,僅僅快了幾秒。

最后發(fā)現(xiàn)其實(shí)是在與微信的服務(wù)器做交互的時(shí)候,DNS解析花了太多時(shí)間!不得已,在服務(wù)器的host中添加一條記錄,直接通過IP指向。

下圖是最終優(yōu)化結(jié)果,雖然達(dá)不到秒開,但至少可以接受了:

二、JavaScript優(yōu)化

1)圖片預(yù)加載

在做一個(gè)“秋名山活動(dòng)”的時(shí)候,使用了圖片預(yù)加載。這個(gè)活動(dòng)中有120多張圖片。

流程很簡(jiǎn)單,就是答題,最后給評(píng)論結(jié)果,再分享出去。

  

如果一下子加載那么多圖片,一定是愚蠢的想法,最后決定,在頁(yè)面載入的時(shí)候先加載一些通用圖片。

在答題的時(shí)候當(dāng)前頁(yè)面,預(yù)先加載后面頁(yè)面中的圖片,防止訪問頁(yè)面的時(shí)候直接不展示圖片,圖片也做了適當(dāng)?shù)暮喜ⅰ?/p>

將網(wǎng)站地址放在gtmetrix.com 測(cè)試,下面是最終的瀑布圖,可以發(fā)現(xiàn)圖片都在其他靜態(tài)資源的后面,這樣能盡早的展現(xiàn)頁(yè)面給用戶:

優(yōu)化還遠(yuǎn)遠(yuǎn)沒有結(jié)束,在Chrome中分別模擬了good 2G、good 3G以及4G后,有結(jié)果的情況并不理想。

good 2G:

  

good 3G:

  

4G:

  

2)減少分支

在寫業(yè)務(wù)邏輯的時(shí)候,經(jīng)常會(huì)用到if else,switch之類的邏輯判斷,如果每次都做這么多判斷,很容易影響性能。

所以可以通過多種方式來(lái)避免過多的判斷。

1. 惰性模式

這是在看《JavaScript設(shè)計(jì)模式》的時(shí)候看到的。

減少每次代碼執(zhí)行時(shí)的重復(fù)性分支判斷,通過對(duì)對(duì)象重定義來(lái)屏蔽原對(duì)象中的分支判斷。

惰性模式分為兩種:第一種文件加載后立即執(zhí)行對(duì)象方法來(lái)重定義,第二種是當(dāng)?shù)谝淮问褂梅椒▽?duì)象時(shí)來(lái)重定義。

公司有個(gè)頁(yè)面要提供給第三方APP,但是最終發(fā)現(xiàn)第三方APP不能使用localStorage緩存,最終只得做兼容的方式。

但為了避免每次引用方法的時(shí)候都做判斷,就使用加載后立即重定義:

var getFn = function() {  if (sore.enabled)    return sore.get;  return cookie.get;}();var setFn = function() {  if (sore.enabled)    return sore.set;  return cookie.set;}();

2. 建立映射關(guān)系

頁(yè)面中經(jīng)常需要彈出框提示,后面就自己做了一個(gè),但彈出框會(huì)有很多款式。

如果用簡(jiǎn)單工廠模式創(chuàng)建的話,免不了switch分支判斷,后面就直接用賦不同的key,還能緩存起來(lái),只初始化一次。

/** * 彈出框單例模式 */var factories = {};var DialogFactory = function(type, options) {  if (factories[type])    return factories[type];  return factories[type] = new iDialog(options);};/** * 提示框 */var Alert = function(content, options) {  var d = DialogFactory('alert', options);  //其他邏輯省略  return d;};/** * 確認(rèn)框 */var Confirm = function(content, options) {  var d = DialogFactory('confirm', options);  //其他邏輯省略  return d;};

 3)第三方代碼異步加載

第三方代碼,例如百度統(tǒng)計(jì)、微信SDK等,這些完全可以在將業(yè)務(wù)資源加載完后再添加。

/** * 百度統(tǒng)計(jì)設(shè)置 */util.baidu = function(key) {  global._hmt = global._hmt || [];  (function() {    var hm = document.createElement("script");    hm.src = "//#/hm.js?" + key;    var s = document.getElementsByTagName("script")[0];    s.parentNode.insertBefore(hm, s);  })();};

4)cookie與localStorage緩存

有了緩存后,就能減少與服務(wù)器的通信,在本地操作。

公司有個(gè)查違章的業(yè)務(wù),在本地添加好車輛后,再次進(jìn)入頁(yè)面的時(shí)候就需要能直接選擇事先添加好的車輛。

最理想的方式就是添加好后,就在本地緩存起來(lái),下次進(jìn)入直接調(diào)取緩存。

  

我會(huì)優(yōu)先使用localStorage,下面的表格就是對(duì)比:

 

cookie

localStorage

數(shù)據(jù)生命周期 

可設(shè)置失效時(shí)間 除非被清除,否則永久保存

數(shù)據(jù)大

大約4KB 大約5M

與服務(wù)器通信

每次都會(huì)攜帶在HTTP頭中,如果使用cookie保存過多數(shù)據(jù)會(huì)帶來(lái)性能問題  不參與和服務(wù)器的通信

本地存儲(chǔ),之前的歷史大概如下圖所示:

localStorage在瀏覽器兼容方面,IE8居然也支持了。

5)事件委托

使用事件委托技術(shù)能讓你避免對(duì)特定的每個(gè)節(jié)點(diǎn)添加事件監(jiān)聽器。

事件監(jiān)聽器是被添加到它們的父元素上,通過事件冒泡,觸發(fā)執(zhí)行。

在開發(fā)的時(shí)候,經(jīng)常會(huì)出現(xiàn)動(dòng)態(tài)添加元素的情況。

如果每次都重新綁定一次事件,那會(huì)有很多多余操作,而綁定在此元素的父級(jí),就只需綁定一次即可。

document.getElementById('ul').onclick = function(e) {  var e = e || window.event,    tar = e.target || e.srcElement;  if (tar.nodeName.toLowerCase() == 'li') {    tar.style.background = 'black';  }}

6)節(jié)流與去抖動(dòng)

節(jié)流(throttle):預(yù)先設(shè)定一個(gè)執(zhí)行周期,當(dāng)調(diào)用動(dòng)作的時(shí)刻大于等于執(zhí)行周期則執(zhí)行該動(dòng)作,然后進(jìn)入下一個(gè)新周期。

例如mousemove 事件、window對(duì)象的resize和scroll事件。

去抖動(dòng)(debounce):當(dāng)調(diào)用動(dòng)作n毫秒后,才會(huì)執(zhí)行該動(dòng)作,若在這n毫秒內(nèi)又調(diào)用此動(dòng)作則將重新計(jì)算執(zhí)行時(shí)間。

例如文本輸入keydown 事件,keyup 事件,做autocomplete等。

節(jié)流與去抖動(dòng)最大的不同的地方就是在計(jì)算最后執(zhí)行時(shí)間的方式上。著名的開源工具庫(kù)underscore中有內(nèi)置了兩個(gè)方法。

在做公司內(nèi)部的一個(gè)系統(tǒng)的時(shí)候,需要方希望在左右滾動(dòng)表格的時(shí)候,能將第一列固定在最左邊,方便查看。

為了讓操作能更流暢,我再這里用了節(jié)流,有些瀏覽器會(huì)出現(xiàn)卡頓,就得需要增加周期時(shí)間。

三、小技巧

1)在手機(jī)中打印變量

在移動(dòng)頁(yè)面的時(shí)候經(jīng)常需要調(diào)試字段,又不能用console.log,每次alert的話,碰到對(duì)象就看不到內(nèi)容了。

只能自己寫個(gè)小方法來(lái)打印出來(lái),JSON.stringify,通過這個(gè)方法能夠方便的實(shí)現(xiàn)功能。

var print = function(obj, space) {  space = space || 4;  var html = JSON.stringify(obj, null, space);  html = html.replace(//n/g, '<br>').replace(//s/g, '&nbsp');  var pre = document.createElement('pre');  var div = document.createElement('code');  pre.style.cssText = 'border:1px solid #000;padding:10px;background:#FFF;margin-bottom:20px;';  div.innerHTML = html;  pre.appendChild(div);  var body = document.querySelector('body');  body.insertBefore(pre, body.children[0]);};print({a:1, b:'demo', c:{text:'content'}});

2)chrome插件JSON-handle

服務(wù)器返回的很多都是JSON格式的數(shù)據(jù),通常寫好后給你個(gè)接口,順便給你幾個(gè)demo參數(shù)。

在瀏覽器中打開后,就是一串字符串,但要給人看的話,就得格式化一下了,這個(gè)插件就是用來(lái)讓人看的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
超薄肉色丝袜足j调教99| 超碰97国产精品人人cao| 91久久久久久久久久久| 免费一级片网址| 国产成人精品一区二区三区在线观看| 久久99成人| 欧美牲交a欧美牲交| 精品免费日韩av| 亚洲成在人线免费| 成人欧美一区二区三区视频xxx| 欧美风情在线视频| 欧美日韩精品久久久| 日韩成人黄色片| 亚洲网站在线播放| 中文字幕视频一区二区在线有码| 亚洲人成在线免费观看| 欧美一区二区激情视频| 成人午夜精品一区二区三区| 日本美女一区二区三区| 亚洲精品中文字幕无码蜜桃| 国产在线播放91| 国产欧美日韩影院| 亚洲综合激情网| 看全色黄大色黄大片免责看的| 狠狠操综合网| 欧美一级高清大全免费观看| 久久日韩精品一区二区五区| 麻豆精品一区二区综合av| 成人免费在线播放| 久久久久久久久久久久久女过产乱| 久久久九九九热| 亚洲观看黄色网| 国产成人免费av一区二区午夜| 亚洲国产欧美另类丝袜| 综合干狼人综合首页| 99久久免费国| 中国在线观看免费国语版电影| 自产国语精品视频| 深夜免费福利视频| 精品中文字幕一区二区小辣椒| 欧美激情在线一区二区三区| 国产精品午夜影院| 先锋影音男人资源| 成人午夜在线观看| 国产精品久久夜| 国产调教在线| 丰满少妇高潮一区二区| 国产在线一区二区三区播放| 精品亚洲一区二区三区四区五区高| 国产福利在线播放| 精品一区二区国语对白| 在线观看黄色av网站| 99久久夜色精品国产亚洲| 欧美激情一区二区三区在线| 欧美精品少妇一区二区三区| 日韩a级黄色片| 97久久香蕉国产线看观看| 亚洲视频免费看| 中文天堂在线观看| 欧美日韩亚洲激情| 国产日本亚洲| 在线视频一区二区三区四区| 亚洲人成电影| 亚洲观看高清完整版在线观看| 麻豆精品久久精品色综合| 精品视频97| 亚洲成人一区在线观看| 婷婷五月精品中文字幕| 亚洲精品一区二区三区婷婷月| 2020色愉拍亚洲偷自拍| 在线免费观看一区二区三区| 欧美精品久久一区二区三区| 视频一区二区综合| 亚洲av成人无码网天堂| 欧美精品日韩综合在线| 欧美xxxxx少妇| 欧美极品美女视频| 亚洲第一av| 亚洲男人天堂| 亚洲国产一区二区三区a毛片| 久久亚洲国产| 中国女人真人一级毛片| 午夜精品久久久久久久99水蜜桃| 欧美日韩国产免费一区二区三区| 精品在线网站观看| 美女高潮在线观看| 国产精品久久久av| 毛片网站网址| www.日韩不卡电影av| 天天综合中文字幕| 国产成人av免费观看| 国产高清免费av| 中文字幕免费高清在线| 国内精品400部情侣激情| 国产中文字幕久久| 激情视频免费观看在线| 成人黄色大片网站| av在线网站观看| 在线观看成人动漫| 一区二区三区不卡在线观看| 久久久久久久一区| 久草中文在线视频| 久久99影院| 337p亚洲精品色噜噜狠狠p| 国产成人在线视频免费观看| 国产av一区二区三区传媒| 99久久精品久久亚洲精品| 国产一区二区网| 亚洲不卡一区二区三区| 曰本色欧美视频在线| 丝袜老师在线| 男人的天堂av网| 国产无一区二区| 77thz桃花论族在线观看| 国产无遮挡又黄又爽又色视频| theav精尽人亡av| 国产一区二区看久久| 日本一区二区三区播放| 国产婷婷视频在线| 成视频在线免费观看| 免费毛片a线观看| 91传媒免费视频| 亚洲久久在线观看| 欧美黄网免费在线观看| 丁香久久五月| 国产美女视频免费| 青青视频免费在线观看| 日韩免费高清视频网站| 国产精品一区一区| 日韩第一页在线| 国产美女久久久久| 泷泽萝拉在线播放| 久久日文中文字幕乱码| 久久久久久亚洲综合| 中文字幕一区二区三区手机版| 性色av一区二区三区红粉影视| www91在线观看| 中文字幕日本最新乱码视频| 精品国产欧美一区二区五十路| 欧美日韩精品一区二区天天拍小说| 久久精品一区二区国产| 香蕉国产精品偷在线观看不卡| 精品国产免费久久久久久尖叫| 美日韩一二三区| 99精品在线观看视频| 亚洲黄色在线| 欧美一级黄色录像片| 亚洲国产精品免费在线观看| 丁香花在线高清完整版视频| 色一区二区三区四区| 日韩成人一区二区| 欧美日韩福利视频| 波多野结衣理论片| 久久综合在线观看| 女优一区二区三区| 国产二区三区四区| 91人成网站www| 高h视频免费观看| 中文字幕日本乱码精品影院| 国产一区二区三区直播精品电影| 欧美三级韩国三级日本三斤在线观看| 性xx无遮挡| 国产精品456露脸| 精品久久久久久亚洲综合网| 色哟哟亚洲精品| 亚洲视频在线观看| 国产精品美乳一区二区免费| 91午夜在线观看| 岛国在线视频网站| 神马久久久久久久| 清纯唯美亚洲综合| brazzers欧美最新版视频| 欧美欧美午夜aⅴ在线观看| 成人精品久久av网站| 久久久99精品免费观看不卡| 欧美激情一区二区三区久久久| 久久久久亚洲AV成人网人人小说| 亚洲一区在线直播| 欧美重口乱码一区二区| 毛片网站在线看| 天堂网在线观看在线观看精品| 日韩免费观看网站| 浅井舞香一区二区| 91精品国自产| 亚洲精品一品区二品区三品区| 激情小说亚洲色图| 日韩高清在线一区二区| 蜜桃麻豆av在线| 午夜欧美不卡精品aaaaa| 男捅女免费视频| 国产农村妇女精品| 国产精品高潮视频| 日韩福利片在线观看| 国产精品永久免费| 快射av在线播放一区| 污香蕉视频在线观看| 中文字幕日韩在线播放| 亚州欧美一区三区三区在线| 久久久久九九视频| 日韩精品久久久久久福利| 欧美黄网站在线观看| 噜噜噜噜噜久久久久久91| 国产高清在线精品一区二区三区| 久久久久免费看黄a片app| 亚洲一区www| 视频一区二区三区入口| 久久男人资源站| 亚洲精品一区二区网址| 久久电影国产免费久久电影| 国产精品久久久久久婷婷天堂| 国产精品一区三区| 亚洲欧美日本另类| 国产99久久精品| 水蜜桃一区二区| 亚洲精品v亚洲精品v日韩精品| 日本一区二区免费视频| 欧美欧美午夜aⅴ在线观看| 国产亚洲精品成人| www.se五月| 国产suv精品一区二区6| 欧美精品播放| 欧美激情视频免费观看| 天堂一区二区在线| 污视频网站在线免费观看| 欧美极品欧美精品欧美| 欧美性受xxxx狂喷水| 午夜亚洲成人| 中文字幕中文字幕在线中高清免费版| 欧美性xxxxx极品视频| 粉嫩av在线播放| 国产美女精品视频免费播放软件| 亚洲精品免费在线看| 亚洲国产欧美不卡在线观看| 久久99视频| 欧美三级成人观看| 色视频网站在线| 久久99国产综合精品女同| 成年午夜在线| 一本到不卡免费一区二区| 3d性欧美动漫精品xxxx软件| 色猫av在线| 日本高清一二三区| 久久在线观看| 美国一级片在线观看| 免费看日产一区二区三区| 六月丁香激情网| 青青草视频成人| 天天操天天摸天天爽| 青青久久aⅴ北条麻妃| 福利网址在线观看| 日韩激情一区| 大陆av在线播放| 精品国产电影一区| 亚洲最大色综合成人av| 日本精品国语自产拍在线观看| 欧美乱人伦中文字幕在线| 亚洲色欲久久久综合网东京热| 视频二区在线观看| 精品久久久久久久久久久久久| 国产强被迫伦姧在线观看无码| 国产黄色三级网站| 国产精品麻豆成人av电影艾秋| 亚洲精品一区二区三区蜜桃久| 久久er热在这里只有精品66| 亚洲激情中文字幕| 蜜桃福利午夜精品一区| 自拍视频在线观看一区二区| 日韩av中文字幕在线| 中文字幕乱码亚洲无线精品一区| 国产欧美一区二区三区鸳鸯浴| 午夜视频一区| 91尤物视频在线观看| 北条麻妃av毛片免费观看| 久久久久高潮毛片免费全部播放| 国产美女主播一区| 五月天免费网站| 国产一区二区视频免费| 中文字幕日韩一区二区三区| 欧美成人国产va精品日本一级| 韩国日本不卡在线| 中文字幕久久亚洲| 国产色爱av资源综合区| 国产精品亚洲不卡a| 北条麻妃视频在线| 主播国产精品| 西西人体44www大胆无码| 六月丁香综合网| 精品福利视频导航大全| 蜜臀精品一区二区三区在线观看| 神马影院一区二区| 日韩黄色动漫| a级片在线视频| 久久久久久国产精品免费免费| 性感美女一区二区在线观看| 97在线观看免费| 久久久久久91香蕉国产| 日本精品一区二区三区四区的功能| mm1313亚洲国产精品无码试看| 无码人妻久久一区二区三区| 先锋影音av网站| 毛片在线播放a| 99精品一区| 天天综合天天做天天综合| 国产精品国产自产拍高清av水多| 在线播放一区二区精品视频| 色噜噜狠狠一区二区| 麻豆免费网站| a天堂资源在线| 国产h片在线观看| 少妇一级淫片免费放播放| 四虎影视永久免费观看| 亚洲黄色性网站| 日韩一区二区三区在线| 欧美一区二区精品久久911| 色综合久久一区二区三区| 久久精品国产理论片免费| 一区二区免费在线播放| 国产精品影音先锋| 国产精品一区二区三| 丁香婷婷综合网| 丝袜诱惑亚洲看片| 国产综合在线观看视频| 国产h视频在线观看| 久久不射热爱视频精品| 国产精品久久久久久久久免费相片| 91欧美精品成人综合在线观看| 精品人妻少妇AV无码专区| 波多野结衣三级视频|