国产黄色免费网站_久久天天做天天爱综合色_精品国产一区久久久_成人黄色激情网站_久久成人在线视频_美女一区二区在线观看_亚洲精品免费一区亚洲精品免费精品一区 _91精品国产综合久久精品麻豆

web下的性能優化1(網絡方向)

2020-4-20    seo達人

性能優化(網絡方向)

web應用無非是兩臺主機之間互相傳輸數據包的一個過程; 如何減少傳輸過程的耗時就是網絡方向優化的重點, 優化出發點從第一篇文章中說起


DNS解析過程的優化

當瀏覽器從第三方服務跨域請求資源的時候,在瀏覽器發起請求之前,這個第三方的跨域域名需要被解析為一個IP地址,這個過程就是DNS解析;

DNS緩存可以用來減少這個過程的耗時,DNS解析可能會增加請求的延遲,對于那些需要請求許多第三方的資源的網站而言,DNS解析的耗時延遲可能會大大降低網頁加載性能。


dns-prefetch

當站點引用跨域域上的資源時,都應在<head>元素中放置dns-prefetch提示,但是要記住一些注意事項。首先,dns-prefetch僅對跨域域上的DNS查找有效,因此請避免將其用于您當前訪問的站點


<link rel="dns-prefetch" >

preconnect

由于dns-prefetch僅執行DNS查找,但preconnect會建立與服務器的連接。如果站點是通過HTTPS服務的,則此過程包括DNS解析,建立TCP連接以及執行TLS握手。將兩者結合起來可提供機會,進一步減少跨源請求的感知延遲


<!-- 注意順序, precontent和dns-prefetch的兼容性 -->

<link rel="preconnect" crossorigin>

<link rel="dns-prefetch" >

TCP傳輸階段優化

這個前端方面好像能做的有限, 我們都知道 http協議 是基于 tcp的;

升級http協議版本可以考慮下, 比如把 http/1.0 -> http/1.1 -> http/2;

這個需要我們在應用服務器上配置(nginx, Apache等), 不做概述了, 另外還需要客戶端和服務器都支持哦, 目前還沒開發出穩定版本,好多只支持https,不過也不遠了...


http2 的優勢

#  1.多路復用: 同一個tcp連接傳輸多個資源

這樣可以突破統一域名下只允許有限個tcp同時連接,

這樣http1.1所做的減少請求數優化就沒有太大必要了

如多張小圖合成一張大圖(雪碧圖),合并js和css文件


# 2.報文頭壓縮和二進制編碼: 減少傳輸體積

http1 中第一次請求有完整的http報文頭部,第二次請求的也是;

http2 中第一次請求有完整的http報文頭部,第二次請求只會攜帶 path 字段;

這樣就大大減少了發送的量。這個的實現要求客戶端和服務同時維護一個報文頭表。


# 3.Server Push

http2可以讓服務先把其它很可能客戶端會請求的資源(比如圖片)先push發給你,

不用等到請求的時候再發送,這樣可以提高頁面整體的加載速度

但目前支持性不太好...emm...

總的來說, 在 c 端業務下不會太普及, 畢竟需要軟件支持才行...


http 請求響應階段優化

為了讓數據包傳輸的更快, 我們可以從兩個方面入手: 請求的數據包大小(服務器), 請求數據包的頻率(客戶端)


減少請求文件的大小

請求文件對應的是我們項目完成后,打包所指的靜態資源文件(會被部署到服務器), 文件越小, 傳輸的數據包也會相對較小, 講道理也會更快到達客戶端


how to reduce a package size?

目前我們都會使用打包工具了(比如webpack, rollup, glup 等), 如何使用工具來減小包的體積呢? 這邊建議您去官網文檔呢...當然這里列舉一下常用的手段(webpack 的), 但是注意要插件版本更新哦


JS文件壓縮

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = {

plugins: [

  new UglifyJsPlugin({

    // 允許并發

    parallel: true,

    // 開啟緩存

    cache: true,

    compress: {

      // 刪除所有的console語句    

      drop_console: true,

      // 把使用多次的靜態值自動定義為變量

      reduce_vars: true,

    },

    output: {

      // 不保留注釋

      comment: false,

      // 使輸出的代碼盡可能緊湊

      beautify: false

    }

  })

]

}

CSS 文件壓縮

// optimize-css-assets-webpack-plugin

plugins: [

 new OptimizeCSSAssetsPlugin({

   assetNameRegExp: /\.css$/g,

   cssProcessor: require('cssnano'),

 }),

];

html 文件壓縮

// html-webpack-plugin

plugins: [

 new HtmlWebpackPlugin({

   template: path.join(__dirname, 'src/index.html'),

   filename: 'index.html',

   chunks: ['index'],

   inject: true,

   minify: {

     html5: true,

     collapseWhitespace: true,

     preserveLineBreaks: false,

     minifyCSS: true,

     minifyJS: true,

     removeComments: false,

   },

 }),

];

source map 文件關閉

tree shaking

1.代碼不會被執行,不可到達,比如 if(false){// 這里邊的代碼}

2.代碼執行的結果不會被用到

3.代碼只會影響死變量(只寫不讀)

4.方法不能有副作用


// 原理相關: 以后在研究

利用 ES6 模塊的特點:

 只能作為模塊頂層的語句出現

 import 的模塊名只能是字符串常量

 import binding 是 immutable 的

代碼擦除: uglify 階段刪除無用代碼

scope hoisting(作用域提升)

分析出模塊之間的依賴關系,盡可能的把打散的模塊合并到一個函數中去,但前提是不能造成代碼冗余


const ModuleConcatenationPlugin = require('webpack/lib/optimize/ModuleConcatenationPlugin');

module.exports = {

 resolve: {

   // 針對 Npm 中的第三方模塊優先采用 jsnext:main 中指向的 ES6 模塊化語法的文件

   mainFields: ['jsnext:main', 'browser', 'main']

 },

 plugins: [

   // 開啟 Scope Hoisting

   new ModuleConcatenationPlugin(),

 ],

};

項目中使用按需加載,懶加載(路由,組件級)

const router = new VueRouter({

 routes: [

   { path: '/foo', component: () => import(/* webpackChunkName: "foo" */ './Foo.vue') }

   { path: '/bar', component: () => import(/* webpackChunkName: "bar" */ './Bar.vue') }

 ]

})

開啟 gizp 壓縮

有時候啟用也會消耗服務器性能, 看情況使用吧

暫時先提這么些吧...后續想到了再加


減少請求頻率

因為同一域名下 tcp 連接數的限制導致過多的請求會排隊阻塞, 所以我們需要盡量控制請求的數量和頻率


常見措施

將靜態資源的內聯到HTML中

這樣這些資源無需從服務器獲取, 但可能影響到渲染進程...


<!-- 1.小圖片內聯 base64 (url-loader) -->

<!-- 2.css內聯 -->

<!-- 3.js內聯 -->

<script>

 ${require('raw-loader!babel-loader!./node_modules/lib-flexible/flexible.js')}

</script>

利用各級緩存(下一篇存儲方面介紹)

通常都是在服務端做相關配置, 但你要知道


我們可以利用http緩存(瀏覽器端)來減少和攔截二次請求, 當然一般都是在服務端設置的;

服務器端也可以設置緩存(redis等), 減少數據查詢的時間同樣可以縮短整個請求時間

利用本地存儲

我們可以將常用不變的信息存在本地(cookie,storage API 等);

判斷存在就不去請求相關的接口, 或者定期去請求也是可以的

花錢買 CDN 加速

CDN 又叫內容分發網絡,通過把資源部署到世界各地,用戶在訪問時按照就近原則從離用戶最近的服務器獲取資源,從而加速資源的獲取速度。 CDN 其實是通過優化物理鏈路層傳輸過程中的網速有限、丟包等問題來提升網速的...


購買 cdn 服務器;

然后把網頁的靜態資源上傳到 CDN 服務上去,

在請求這些靜態資源的時候需要通過 CDN 服務提供的 URL 地址去訪問;


# 注意, cdn 緩存導致的新版本發布后不生效的問題

所以打包的時候常在文件后面加上 hash 值

然后在 HTML 文件中的資源引入地址也需要換成 CDN 服務提供的地址

/alicdn/xx12dsa311.js


# 利用不同域名的 cdn 去存放資源, (tcp連接限制)

webpack 構建時添加 cdn

// 靜態資源的導入 URL 需要變成指向 CDN 服務的絕對路徑的 URL 而不是相對于 HTML 文件的 URL。

// 靜態資源的文件名稱需要帶上有文件內容算出來的 Hash 值,以防止被緩存。

// 不同類型的資源放到不同域名的 CDN 服務上去,以防止資源的并行加載被阻塞。

module.exports = {

 // 省略 entry 配置...

 output: {

   // 給輸出的 JavaScript 文件名稱加上 Hash 值

   filename: '[name]_[chunkhash:8].js',

   path: path.resolve(__dirname, './dist'),

   // 指定存放 JavaScript 文件的 CDN 目錄 URL

   publicPath: '//js.cdn.com/id/',

 },

 module: {

   rules: [

     {

       // 增加對 CSS 文件的支持

       test: /\.css$/,

       // 提取出 Chunk 中的 CSS 代碼到單獨的文件中

       use: ExtractTextPlugin.extract({

         // 壓縮 CSS 代碼

         use: ['css-loader?minimize'],

         // 指定存放 CSS 中導入的資源(例如圖片)的 CDN 目錄 URL

         publicPath: '//img.cdn.com/id/'

       }),

     },

     {

       // 增加對 PNG 文件的支持

       test: /\.png$/,

       // 給輸出的 PNG 文件名稱加上 Hash 值

       use: ['file-loader?name=[name]_[hash:8].[ext]'],

     },

     // 省略其它 Loader 配置...

   ]

 },

 plugins: [

   // 使用 WebPlugin 自動生成 HTML

   new WebPlugin({

     // HTML 模版文件所在的文件路徑

     template: './template.html',

     // 輸出的 HTML 的文件名稱

     filename: 'index.html',

     // 指定存放 CSS 文件的 CDN 目錄 URL

     stylePublicPath: '//css.cdn.com/id/',

   }),

   new ExtractTextPlugin({

     // 給輸出的 CSS 文件名稱加上 Hash 值

     filename: `[name]_[contenthash:8].css`,

   }),

   // 省略代碼壓縮插件配置...

 ],

};

/*

以上代碼中最核心的部分是通過 publicPath 參數設置存放靜態資源的 CDN 目錄 URL,

為了讓不同類型的資源輸出到不同的 CDN,需要分別在:


output.publicPath 中設置 JavaScript 的地址。

css-loader.publicPath 中設置被 CSS 導入的資源的的地址。

WebPlugin.stylePublicPath 中設置 CSS 文件的地址。

設置好 publicPath 后,WebPlugin 在生成 HTML 文件和 css-loader 轉換 CSS 代碼時,會考慮到配置中的 publicPath,用對應的線上地址替換原來的相對地址。

*/

參考

DNS MDN]

webpack 文檔

深入淺出 Webpack

Scope Hoisting



日歷

鏈接

個人資料

藍藍設計的小編 http://www.newchinaweekly.com

存檔

成人免费网站黄| 成人动漫一区二区三区| 国产成人综合亚洲91猫咪| 久久久91精品国产一区二区精品 | 欧美日韩在线国产| 久久久久国产精品免费网站| 91精品国产91久久久久久吃药| 亚洲淫片在线视频| 久久理论片午夜琪琪电影网| 一本色道久久88综合日韩精品 | 色婷婷狠狠综合| 亚洲永久精品大片| 亚洲婷婷国产精品电影人久久| av电影在线观看不卡| 亚洲一区二区三区爽爽爽爽爽| ...xxx性欧美| 精品国精品国产| 欧美中在线观看| 亚洲精品一卡二卡三卡四卡| 天天操狠狠操夜夜操| 天天干天天操天天做| 中国女人特级毛片| 国产精品无码一区二区桃花视频| 久草视频国产| 国产区av在线| 毛片免费不卡| 日本在线啊啊| 一区二区三区网站| 国产午夜亚洲精品不卡| 日韩亚洲欧美在线观看| 精品国产人成亚洲区| 欧美主播福利视频| 男人添女荫道口图片| 亚洲一区在线不卡| 韩国av中国字幕| 日韩人妻无码精品综合区| 国产人与禽zoz0性伦| 丰满少妇高潮在线观看| 免费成人高清| 日韩一级特黄| 婷婷五月色综合香五月| 欧美精品色图| 成人免费观看视频| 日韩欧美亚洲国产另类| 亚洲免费影视第一页| 久久久97精品| 国产日韩中文字幕| 丰满人妻中伦妇伦精品app| 性生活一级大片| 波多野结衣电车| 中文字幕第八页| 免费黄色a网站| 精精国产xxxx视频在线野外| 一本色道69色精品综合久久| 麻豆极品一区二区三区| 欧美在线视频全部完| 亚洲免费高清视频| 欧美日韩国产不卡在线看| www.日本在线视频| 久久久久无码国产精品| 毛片网站免费哦| 啪啪av大全导航福利综合导航| 另类调教123区| 亚洲成人xxx| 欧美日韩系列| 精品一区二区6| 国产又粗又大又爽| 亚洲综合在线一区| 成人av资源电影网站| 久久99精品久久久久久动态图 | 黄色一级片网址| 久久精品亚洲无码| 亚洲色图第一页| 国产一区二区三区朝在线观看| 情趣视频网站在线免费观看| chinese偷拍一区二区三区| 中文字幕乱码在线播放| 麻豆亚洲精品| 亚洲视频狠狠干| 777国产偷窥盗摄精品视频| 午夜免费福利视频在线观看| 日本黄色免费视频| 香蕉521av成人网| 99re8这里有精品热视频免费| 国产日韩三级在线| 2021久久精品国产99国产精品| 一区二区三区网址| 日日悠悠久久| 国产精品一区二区三区av| 久久品道一品道久久精品| 欧美久久久精品| 性久久久久久久久久久久久久| 又粗又大的机巴好爽欧美| 欧美激情喷水| 99精品久久久| 亚洲精品欧美激情| 国产美女精彩久久| 狂野欧美性猛交| av福利导福航大全在线播放| 黄色成人在线视频| 国产日韩欧美a| 国产精品亚洲综合天堂夜夜| 免费人成又黄又爽又色| 天天噜夜夜操| 欧美一区=区三区| 中文字幕一区在线观看| 91精品久久久久久久久| 国精品人伦一区二区三区蜜桃| **毛片在线网站| 久久一区二区三区四区五区| 国产香蕉精品视频一区二区三区| 成年人免费在线播放| 日韩激情文学| 五月国产精品| 欧美一区二区播放| 国产伦精品一区二区三区视频黑人| 日韩高清在线一区二区| 午夜羞羞视频| 99久久.com| 亚洲激情综合网| 91精品国产91久久久久久最新| 亚洲一区二区三区四区五区六区| 伊人伊人av电影| 欧美三级视频| 色婷婷一区二区三区四区| 四虎影院一区二区三区| 国产免费视频一区二区三区| 色戒汤唯在线观看| 亚洲乱码国产乱码精品精的特点 | 久久久一本精品| 亚洲一区二区三区四区在线观看 | 乱人伦中文字幕在线zone| 久本草在线中文字幕亚洲| 欧美精品黑人性xxxx| 国产精品一区二区三区免费观看| 精品国产一区二区三区四| 中文字幕在线第一页| 久久精品国产亚洲夜色av网站| 国产一区二区三区成人欧美日韩在线观看| 国产手机视频精品| 宇都宫紫苑在线播放| 写真福利片hd在线观看| 日本怡春院一区二区| 5566成人精品视频免费| 日本少妇全体裸体洗澡| 在线播放免费| 国产传媒日韩欧美成人| 成人精品一区二区三区| 伊人网av在线| 精品久久久久久久久久岛国gif| 欧美视频在线播放| 亚洲精品中文字幕在线| 四虎精品成人a在线观看| 性欧美欧美巨大69| 91麻豆精品国产自产在线| 九一精品在线观看| 中文字幕第5页| 91小视频在线免费看| 97国产精品视频| 狠狠人妻久久久久久综合蜜桃| 精品无吗乱吗av国产爱色| 国产肉丝袜一区二区| 激情视频小说图片| 操碰免费视频| 丁香一区二区三区| 97在线视频免费观看| 成人毛片18女人毛片| 免费大片在线观看www| 亚洲精品大片www| 国产又大又硬又粗| 网址你懂得在线观看| 国产精品久久网站| 日韩小视频在线播放| 白白色在线发布| 国产精品情趣视频| 国产精品国产亚洲精品看不卡| jizz国产| 国产欧美视频一区二区三区| 51xx午夜影福利| 天天影视色香欲综合| 中文字幕巨乱亚洲| 欧美女人性生活视频| 九一在线视频| 狠狠综合久久av一区二区小说| 亚洲欧美日韩精品久久久| 2019国内自拍| 国产欧美一区二区精品婷婷| 六月婷婷在线视频| 日本福利片高清在线观看| 亚洲成人免费观看| 韩国三级在线看| 成人欧美magnet| 亚洲色图综合网| 亚洲中文无码av在线| 91久久高清国语自产拍| 91精品美女在线| 黄色免费电影网站| 日本一区二区三区dvd视频在线| 五月天婷婷激情视频| 激情av在线|