日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 網站 > 網頁設計 > 正文

淺談前端網絡、JavaScript優化以及開發小技巧

2024-08-30 08:36:05
字體:
來源:轉載
供稿:網友

一、網絡優化

YSlow 有23條規則。這幾十條規則最主要是在做消除或減少不必要的網絡延遲,將需要傳輸的數據壓縮至最少。

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

通過構建工具Gulp ,可以在開發的時候就將合并壓縮的事情一起做掉。

之所以要做合并壓縮是因為:HTTP 1.x不允許一個連接上的多個響應數據交錯到達(多路復用),因而一個響應必須完全返回后,下一個響應才會開始傳輸。

也就是說即使客戶端同時發送了兩個請求,而且CSS資源先準備就緒,服務器也會先發送HTML響應,然后再交付CSS。

使用CDN是為了讓用戶訪問的時候能用最近的資源,減少來回傳輸時間。

HTTP2.0改進了HTTP1.x很多方面。

2)CSS放頂部,JavaScript放底部

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

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

這是因為行內腳本可能含有依賴于樣式表中樣式的代碼,比如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 += '寫入頁面';    document.getElementById('content').innerHTML = content;  </script>  <img src="images/ui.png" /></body>

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

3)優化DNS解析,減少重定向

在做一個“女神評選活動”的時候,需要在微信中訪問能夠獲取用戶的openid,微信獲取用戶基本信息是需要經過幾個步驟的:

先獲取code,再通過code獲取openid,最后再跳轉訪問靜態頁面。

由于公司將業務分成了多個小組,所以短短的三步其實需要三個小組配合,需要重定向多個域名。

下圖是未優化前的瀑布圖,但不是最壞情況,有時候訪問到靜態頁面需要經過10多秒,完全不能接受,下圖中會跳轉4個域名:

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

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

下圖是最終優化結果,雖然達不到秒開,但至少可以接受了:

二、JavaScript優化

1)圖片預加載

在做一個“秋名山活動”的時候,使用了圖片預加載。這個活動中有120多張圖片。

流程很簡單,就是答題,最后給評論結果,再分享出去。

  

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

在答題的時候當前頁面,預先加載后面頁面中的圖片,防止訪問頁面的時候直接不展示圖片,圖片也做了適當的合并。

將網站地址放在gtmetrix.com 測試,下面是最終的瀑布圖,可以發現圖片都在其他靜態資源的后面,這樣能盡早的展現頁面給用戶:

優化還遠遠沒有結束,在Chrome中分別模擬了good 2G、good 3G以及4G后,有結果的情況并不理想。

good 2G:

  

good 3G:

  

4G:

  

2)減少分支

在寫業務邏輯的時候,經常會用到if else,switch之類的邏輯判斷,如果每次都做這么多判斷,很容易影響性能。

所以可以通過多種方式來避免過多的判斷。

1. 惰性模式

這是在看《JavaScript設計模式》的時候看到的。

減少每次代碼執行時的重復性分支判斷,通過對對象重定義來屏蔽原對象中的分支判斷。

惰性模式分為兩種:第一種文件加載后立即執行對象方法來重定義,第二種是當第一次使用方法對象時來重定義。

公司有個頁面要提供給第三方APP,但是最終發現第三方APP不能使用localStorage緩存,最終只得做兼容的方式。

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

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. 建立映射關系

頁面中經常需要彈出框提示,后面就自己做了一個,但彈出框會有很多款式。

如果用簡單工廠模式創建的話,免不了switch分支判斷,后面就直接用賦不同的key,還能緩存起來,只初始化一次。

/** * 彈出框單例模式 */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;};/** * 確認框 */var Confirm = function(content, options) {  var d = DialogFactory('confirm', options);  //其他邏輯省略  return d;};

 3)第三方代碼異步加載

第三方代碼,例如百度統計、微信SDK等,這些完全可以在將業務資源加載完后再添加。

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

4)cookie與localStorage緩存

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

公司有個查違章的業務,在本地添加好車輛后,再次進入頁面的時候就需要能直接選擇事先添加好的車輛。

最理想的方式就是添加好后,就在本地緩存起來,下次進入直接調取緩存。

  

我會優先使用localStorage,下面的表格就是對比:

 

cookie

localStorage

數據生命周期 

可設置失效時間 除非被清除,否則永久保存

數據大

大約4KB 大約5M

與服務器通信

每次都會攜帶在HTTP頭中,如果使用cookie保存過多數據會帶來性能問題  不參與和服務器的通信

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

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

5)事件委托

使用事件委托技術能讓你避免對特定的每個節點添加事件監聽器。

事件監聽器是被添加到它們的父元素上,通過事件冒泡,觸發執行。

在開發的時候,經常會出現動態添加元素的情況。

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

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)節流與去抖動

節流(throttle):預先設定一個執行周期,當調用動作的時刻大于等于執行周期則執行該動作,然后進入下一個新周期。

例如mousemove 事件、window對象的resize和scroll事件。

去抖動(debounce):當調用動作n毫秒后,才會執行該動作,若在這n毫秒內又調用此動作則將重新計算執行時間。

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

節流與去抖動最大的不同的地方就是在計算最后執行時間的方式上。著名的開源工具庫underscore中有內置了兩個方法。

在做公司內部的一個系統的時候,需要方希望在左右滾動表格的時候,能將第一列固定在最左邊,方便查看。

為了讓操作能更流暢,我再這里用了節流,有些瀏覽器會出現卡頓,就得需要增加周期時間。

三、小技巧

1)在手機中打印變量

在移動頁面的時候經常需要調試字段,又不能用console.log,每次alert的話,碰到對象就看不到內容了。

只能自己寫個小方法來打印出來,JSON.stringify,通過這個方法能夠方便的實現功能。

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

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
欧美不卡一区二区| 91精品国产91久久久久青草| 国产视频中文字幕| 亚洲综合三区| 亚洲制服丝袜一区| 国产在线导航| 亚洲狠狠婷婷综合久久久久图片| 欧美日中文字幕| 99pao成人国产永久免费视频| 精品成人久久av| 在线观看国产福利视频| 亚洲一区在线观看免费| 国产在线小视频| 欧美日韩综合在线观看| 色欧美日韩亚洲| 国产乱国产乱300精品| 日韩欧美一级二级三级久久久 | 日韩一级网站| 不卡在线一区二区| 一区三区二区视频| 欧美日韩中文字幕精品| 伊人网站在线| 91国内在线| 国产日韩在线亚洲字幕中文| 国产黄在线看| 日韩精品视频在线观看网址| 欧美日韩国产亚洲一区| 日韩 欧美 中文| 欧美亚洲视频在线看网址| 国产欧美日韩综合| 国产精品一区二三区| 亚洲女人天堂a在线播放| 人人做人人澡人人爽欧美| 久久99久久99精品中文字幕| 韩国一区二区av| 国产69精品久久久久孕妇国产69久久| 亚洲一区在线观看网站| 中文字幕 亚洲视频| 91日韩欧美| 蜜桃视频中文字幕| 日韩精品丝袜在线| 亚洲日本欧美日韩高观看| 欧美日韩成人一区| 欧美亚洲天堂网| 国产啊啊啊视频在线观看| 国产一卡2卡3卡4卡网站免费| 亚洲欧洲日产国码av系列天堂 | 日韩欧美国产成人一区二区| 在线手机中文字幕| 中文字幕精品在线播放| 中文字幕在线欧美| 婷婷久久综合九色国产成人| 中文字幕日韩精品在线| 国产色在线 com| 尤物av一区二区| 国产美女主播视频一区| 精品久久香蕉国产线看观看gif| 一级一片免费视频| 国产成人综合av| 日韩影院二区| 欧美综合精品| 亚洲第一视频网站| 日韩在线视频一区二区三区| 国产又粗又猛又爽又黄91精品| 1区2区3区在线视频| 国产欧美日韩在线| 日韩精品视频网站| √天堂资源中文www| 一区二区视频国产| 一区二区三区久久| 欧美国产亚洲一区| 国产在线不卡一区| 日韩欧美一级在线播放| 久久精品免费在线观看| 欧美日韩在线精品一区二区三区激情综| 国产在线观看a| 日韩精品在线观看网站| 国产欧美日韩不卡| 国产99亚洲| 亚洲一级特黄| 精品久久久视频| 一本大道一区二区三区| 中文字幕久精品免费视频| www.精品av.com| 老司机久久99久久精品播放免费| 欧美日韩在线播放视频| 蜜桃视频一日韩欧美专区| 亚欧成人精品| 中文字幕在线高清| 精品调教chinesegay| 国产日韩电影| 韩国v欧美v日本v亚洲| 一级国产黄色片| 欧美.日韩.国产.一区.二区| 国产永久在线观看| 成人a在线观看| 精品网站999www| 日韩免费电影网站| 欧美日韩精品在线| 91精品国产自产观看在线| 国产欧美综合在线观看第十页 | 亚州福利视频| 中文字幕日韩欧美在线| 伊人永久在线| 欧美午夜精品在线| 日韩欧美在线视频日韩欧美在线视频| 精品国产乱码一区二区| 亚洲高清中文字幕| 亚洲国产无线乱码在线观看| 国产激情在线播放| 精品极品三级久久久久| 午夜高潮免费视频| 精品视频999| 久久精品一级爱片| 国产一区高清视频| 久久久精品日韩欧美| 亚洲丝袜一区| 国产午夜在线观看| 国产欧美久久久久久久久| 亚洲免费中文字幕| www.狠狠干| 日韩精品免费观看视频| 中文字幕乱码在线| 91精品国产色综合久久不卡蜜臀| 中文字幕在线视频网| 正在播放日韩精品| 欧美亚洲综合视频| 91精品国产自产在线| 免费看日韩精品| 欧美三级精品| 欧美专区中文字幕| 国产91久久久久| 在线一区二区三区精品| 一区二区在线高清视频| 在线日韩欧美| 欧美一级二级三级区| 国产一卡2卡3卡免费网站| 国产成免费视频| 日韩.com| 午夜一区二区三区| 欧美日韩国产一区| 精品视频资源站| 久久久99精品久久| 一本大道一区二区三区| 一级特黄大欧美久久久| 国产精品一区二三区| 97国产视频| 日韩美女视频一区二区在线观看| 欧美日韩性视频一区二区三区| 日韩色在线观看| 亚洲中文字幕一区| 在线观看免费国产小视频| 国产 日韩 欧美 综合 一区| www日韩在线观看| 在线观看91精品国产入口| 国产免费电影网站入口| 精品不卡一区二区| 亚洲a一级视频| 精品调教chinesegay| av免费观看网站| 天堂中文在线视频| 91精品国产91综合久久蜜臀| 亚洲欧美日本国产专区一区| 一区二区三区在线播放欧美| 国产乱一区二区| 亚洲欧洲国产视频| av免费网站在线观看| 久久夜色精品国产欧美乱极品 | 欧美日韩在线综合| 91精品在线观看视频| 久久精品www| 国产一级一片免费播放| 精人妻一区二区三区| 激情国产在线| 福利一区二区| 国产日韩精品久久久| 婷婷久久综合网| 日韩国产一区久久| 日韩国产欧美三级| 日韩视频第二页| 中文字幕 日韩 欧美| 欧美大片在线观看一区| 伊人亚洲视频| 免费视频二区| 国产一卡2卡3卡四卡网站| 亚洲福利一区二区三区| 一区二区三区在线播放视频| 在线观看国产一级片| 日韩精品视频在线播放| 欧美人妻一区二区三区| 国产一区精品| 日韩欧美色综合网站| 中文字幕精品国产| 99久久婷婷| 亚洲社区在线| 福利在线国产| 欧美三级日韩三级国产三级| 亚洲一区在线观看网站| 欧美日韩乱国产| 日韩精品三级| 欧美精选午夜久久久乱码6080| 亚洲一区中文字幕在线观看| 在线观看免费国产小视频| 中文字幕亚洲第一| 欧美一级手机免费观看片| 久久精品女人| 精品在线一区二区| 精品国产1区二区| 免费视频最近日韩| 99精品视频99| 亚洲黄在线观看| 婷婷中文字幕综合| 国产亚洲污的网站| 日韩中文字幕视频在线观看| 欧美日韩国产第一页| 久久久精品日韩| 婷婷久久综合网| 91久久在线| 久久riav| 欧美日韩精品欧美日韩精品| 久久久精品午夜少妇| 欧美日韩国产大片| 中文字幕亚洲一区在线观看| 日韩精品在线视频| 中文国产字幕在线观看| 不卡在线视频| 一区二区三区在线播放视频| 日韩三级视频在线看| 欧美日韩99| 国产日韩在线亚洲字幕中文| 欧美日中文字幕| 日韩欧中文字幕| 欧美日韩精品在线| 91精品国产综合久久福利| 午夜伊人狠狠久久| 久久韩国免费视频| 欧美三级视频在线| 亚洲综合在线中文字幕| 精品一二三四区| 日韩一级视频在线观看| 亚洲.国产.中文慕字在线| √新版天堂资源在线资源| 日韩视频一区二区在线观看| 成人h视频在线观看| 91精品国产色综合久久久蜜香臀 | 一区二区三区中文字幕在线观看| 日本中文字幕在线观看| 国产小视频免费在线观看| 国产高清一区| 中文字幕在线国产| 成人a在线观看| 97久久精品| 国产区日韩欧美| 免费视频中文字幕| 美日韩精品免费视频| 国产一区不卡在线| 国产午夜精品视频免费不卡69堂| 欧美日韩国产首页| 欧美 日韩 国产在线| 亚洲欧美小说国产图片| 中文字幕在线播出| 一区二区日韩免费看| 午夜一区二区三区| 日韩wumaV| 久久香蕉一区| 中文字幕亚洲二区| 国产欧美中文字幕| 欧洲精品在线视频| 欧美日韩中文国产| 国产九九在线| 国产又粗又猛又爽又黄91精品| 在线视频不卡国产V| 久久综合久久综合九色| 樱花草www在线| 国产成人精品日本亚洲专区61| 又黄又www的网站| 日韩中文字幕在线观看视频| 国产视频一二区| 成人ww免费完整版在线观看| 日韩在线视频免费观看高清中文 | 视频一区日韩| 久久久久久久久99精品| 国产三级在线播放| 精品亚洲永久免费| 91精品国产欧美日韩| 亚洲福利精品在线| 亚洲一区视频在线观看视频| 激情久久99| 国产欧美日韩中文久久| 欧美一级日韩一级| 日韩欧美色综合网站| 国产免费播放一区二区| 欧美在线日韩精品| 日韩在线小视频| 色屁屁一区二区| 国产91久久久久| 91精品国产综合久久久蜜臀粉嫩| 国产视频三级在线观看播放| av免费在线播放| 欧美日韩中文字幕精品| 久久香蕉精品| 国产久卡久卡久卡久卡视频精品| 中文在线一区二区| 日韩久久不卡| 日韩亚洲欧美中文字幕| 日韩欧美不卡| 日韩高清不卡一区二区| 中文字幕亚洲在| 国产成人精品av久久| 国产视频中文字幕| 亚洲综合在线视频| av中文网站| 99精品视频国产| 国产欧美日韩亚洲| 二区视频在线观看| 欧美三级日韩在线| 国产成人精品综合久久久| 日韩欧美国产三级| 日韩精品视频免费| 国产三级在线| 91精品国产综合久久蜜臀| 欧美日韩国产观看视频| 日韩午夜中文字幕| 国产一级片在线| 欧美日韩综合不卡| 国产男女av| 日韩你懂的电影在线观看| 日韩欧美亚洲视频| 国产不卡的av| 精品国产欧美日韩| 国产偷久久久精品专区| 日韩精品大片| 日韩在线视频观看正片免费网站| 国产高清一级片| 日韩高清在线一区二区| 黄色国产网站在线观看| a视频在线播放| 国产欧美日韩亚州综合| 欧美日韩在线精品一区二区三区激情综| 亚洲女同中文字幕| 国产欧美综合在线观看第十页| 91精品国产自产在线| 婷婷中文字幕综合| a视频免费在线观看| 日韩欧美国产一二三区| 亚洲成a人片在线www| 国产福利久久久| 欧美日韩国产中文精品字幕自在自线| 中文字幕视频在线观看| 一本一道综合狠狠老| 精品日韩99亚洲| 久久久精品网| 亚洲高清视频在线| 午夜视频在线观看一区| 国产三级视频在线| 在线三级av| 精品国产综合久久| 日韩免费精品视频| 92久久精品| 国产一级视频| 日韩精品在线私人| 91精品国产全国免费观看| 国产丝袜欧美中文另类| www中文字幕| 国产 日韩 欧美 综合| 亚洲国产www| 日韩av在线中文字幕| 国产高清在线视频| 日韩精品在线第一页| 黄色一区二区视频| 国产欧美日韩视频在线| 亚洲免费在线视频一区 二区| 老司机久久99久久精品播放免费| 欧美三级中文字幕在线观看| 久久91精品国产91久久小草| 亚洲大片精品永久免费| 精品国产乱码久久久久久牛牛| 日韩中文字幕观看| 欧美日韩精品综合在线| 中文在线视频| 中文字幕亚洲二区| 在线看av的网址| 麻豆精品99| 国产黄在线播放| 一区二区不卡视频| 国产欧美日韩中文字幕| 欧美久久久久久蜜桃| 精品欧美不卡一区二区在线观看| 欧美性生交大片免费| 欧美日韩国产一区在线| 国产欧美综合在线| 国产69精品久久久久孕妇国产69久久 | 日韩在线视频免费观看| 国产伦精品免费视频| 精品视频999| 99中文字幕一区| 91精品婷婷国产综合久久竹菊| 国产午夜精品一区二区三区视频| 日韩视频免费直播| 日韩亚洲欧美中文在线|