精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

埋點統計優化,首屏加載速度提升

開發 前端
統計代碼會影響業務首屏加載嗎?同步引入方式,當然會,我的業務代碼還沒加載,首屏就加載一大段統計的jsdk,在移動端頁面打開要求比較高的苛刻條件下,首屏優化,你可以在埋點統計上做些優化,那么頁面加載會有一個很大的提升,本文是一篇筆者關于埋點優化的筆記,希望看完在項目中有所思考和幫助。

埋點統計在我們業務里經常有遇到,或者很普遍的,我們自己網站也會加入第三方統計,我們會看到動態加載方式去加載jsdk,也就是你常??吹降膇nsertBefore操作,我們很少考慮到為什么這么做,直接同步加載不行嗎?

統計代碼會影響業務首屏加載嗎?同步引入方式,當然會,我的業務代碼還沒加載,首屏就加載一大段統計的jsdk,在移動端頁面打開要求比較高的苛刻條件下,首屏優化,你可以在埋點統計上做些優化,那么頁面加載會有一個很大的提升,本文是一篇筆者關于埋點優化的筆記,希望看完在項目中有所思考和幫助。

最近遇到一個問題,先看一段代碼。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>埋點</title>
<script>
window.formateJson = (data) => JSON.stringify(data, null, 2);
</script>
<script async defer>
(function (win, head, attr, script) {
console.log("---111---");
win[attr] = win[attr] || [];
const scriptDom = document.createElement(script);
scriptDom.async = true;
scriptDom.defer = true;
scriptDom.src = "./js/tj.js";
scriptDom.onload = function () {
win[attr].push({
id: "maic",
});
win[attr].push({
id: "Tom",
});
console.log("---2222---");
console.log(formateJson(win[attr]));
};
setTimeout(() => {
console.log("setTimeout---444---");
head.parentNode.insertBefore(scriptDom, head);
}, 1000);
})(window, document.getElementsByTagName("head")[0], "actd", "script");
</script>
<script async defer src="./js/app.js"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>

我們會發現,打印的順序結果是下面這樣的:

---111---
app.js:2 ---333--- start load app.js
app.js:4 [
{
"id": "pink"
}
]
(index):30 setTimeout---444---
(index):26 ---2222---
(index):27 [
{
"id": "pink"
},
{
"id": "maic"
},
{
"id": "Tom"
}
]

冥思苦想,我們發現最后actd的結果是:

[
{
"id": "pink"
},
{
"id": "maic"
},
{
"id": "Tom"
}
]

其實我本意想要的結果是先添加maic,Tom,最后添加pink,需求就是,必須先在這個ts.js執行后,預先添加基礎數據,然后在其他業務app.js添加其他數據,所以此時,無論如何都滿足不了我的需求。

試下想,為什么沒有按照我預期的要求走,問題就是出現在這個onload方法上。

onload事件

于是查詢資料尋得,onload事件是會等引入的外部資源加載完畢后才會觸發。

外部資源加載完畢是什么意思?

舉個栗子,我在引入的index2.html引入index2.js,然后在引入腳本上寫一個onload事件測試loadIndex2方法是否在我延時加載后進行調用的。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
function loadIndex2() {
console.log("script loader...");
}
</script>
<script src="./js/index2.js" onload="loadIndex2()"></script>
</body>
</html>

index2.js中寫入一段代碼:

var startTime = Date.now()
const count = 1000;
let wait = 10000;
/// 設置延時
const time = wait * count;
for (let i = 0; i < time; i++) { }

var endTime = Date.now()
console.log(startTime, endTime)
console.log(`延遲了:${Math.ceil((endTime - startTime) / 1000)}s后執行的`)

最后看下打印結果。

圖片

所以可以證實,onload是會等資源下載完了后,才會立即觸發。

所以我們回頭來看。

在瀏覽器的事件循環中,同步任務主線程肯定優先會先順序執行。

從打開印---111---,

然后到onload此時不會立即執行。

遇到定時器,定時器設置了1s后會執行,是個宏任務,會放入隊列中,此時不會立即執行。

然后接著會執行 <script async defer src="./js/app.js"></script>腳本。

所以此時,執行該腳本后,我們可以看到會先執行push方法。

所以我們看到pink就最先被推入數組中,當該腳本執行完畢后,此時會去執行定時器。

定時器里我們看到我們插入方式insertBefore,當插入時成功時,此時會調用onload方法,所以此時就會添加maic與Tom。

很明顯,我們此時的需求不滿足我們的要求,而且一個onload方法已經成了攔路虎。

那么我去掉onload試試,因為onload方法只會在腳本加載完畢后去執行,他只會等執行定時器后,成功插入腳本后才會真正執行,而此時其他腳本已經優先它的執行了。

那該怎么解決這個問題呢?

我把onload去掉試試,于是我改成了下面這樣:

<script async defer>
(function (win, head, attr, script) {
console.log("---111---");
win[attr] = win[attr] || [];
const scriptDom = document.createElement(script);
scriptDom.async = true;
scriptDom.defer = true;
scriptDom.src = "./js/tj.js";
win[attr].push({
id: "maic",
});
win[attr].push({
id: "Tom",
});
console.log("---2222---");
console.log(formateJson(win[attr]));
setTimeout(() => {
console.log("setTimeout---444---");
head.parentNode.insertBefore(scriptDom, head);
}, 1000);
})
(window, document.getElementsByTagName("head")
[0], "actd", "script");
</script>

去掉onload后,我確實達到了我想要的結果。

最后的結果是:

[
{
"id": "maic"
},
{
"id": "Tom"
},
{
"id": "pink"
}
]

但是你會發現:

圖片

我先保證了window.actd添加了我預定提前添加的基礎信息,但此時,這個腳本并沒有真正添加到dom中,我們執行完同步任務后,就會執行app.js,當1s后,我才真正執行了這個插入的腳本,而且我統計腳本你會發現此時是先執行了app.js再加載tj.js的。

當執行setTimeout時,我們會發現先執行了內部腳本,然后才執行打印。

<script async defer>
(function (win, head, attr, script) {
console.log("---111---");
win[attr] = win[attr] || [];
const scriptDom = document.createElement(script);
scriptDom.async = true;
scriptDom.defer = true;
scriptDom.src = "./js/tj.js";
win[attr].push({
id: "maic",
});
win[attr].push({
id: "Tom",
});
console.log("---2222---");
console.log(formateJson(win[attr]));
setTimeout(() => {
console.log("setTimeout---444444---");
window.actd.push({
id: "setTimeout",
});
head.parentNode.insertBefore(scriptDom, head);
console.log(formateJson(window.actd));
}, 1000);
})(window, document.getElementsByTagName("head")[0], "actd", "script");
</script>

最后的結果,可以看到是這樣的:

[
{
"id": "maic"
},
{
"id": "Tom"
},
{
"id": "pink"
},
{
"id": "setTimeout"
}
]

看到這里不知道你心里有沒有一個疑問,為什么在動態插入腳本時,我要用一個定時器1s鐘?為什么我需要用insertBefore這種方式插入腳本?,我同步方式引入不行嗎?不要定時器又會有什么樣的結果?

我們通常在接入第三方統計時,貌似都是一個這樣一個insertBefore插入的jsdk方式(但是一般我們都是同步方式引入jsdk)。

沒有使用定時器(3237ms)

<script async defer>
(function (win, head, attr, script) {
...
console.log("setTimeout---444444---");
window.actd.push({
id: "setTimeout",
});
head.parentNode.insertBefore(scriptDom, head);
console.log(formateJson(window.actd));
})(window, document.getElementsByTagName("head")[0], "actd", "script");
</script>

圖片

結果:

[
{
"id": "maic"
},
{
"id": "Tom"
},
{
"id": "setTimeout"
},
{
"id": "pink"
},
]

使用用定時器的(1622ms)

<script async defer>
(function (win, head, attr, script) {
...
setTimeout(() => {
console.log("setTimeout---444444---");
window.actd.push({
id: "setTimeout",
});
head.parentNode.insertBefore(scriptDom, head);
console.log(formateJson(window.actd));
}, 1000);
})(window, document.getElementsByTagName("head")[0], "actd", "script");
</script>

圖片

當我們用瀏覽器的Performance去比較兩組數據時,我們會發現總長時間,使用定時器的性能大概比沒有使用定時器的性能時間上大概要少50%,在summary中所有數據均有顯示的提升。

不經感嘆,就一個定時器這一點點的改動,對整個應用提升有這么大的提升,我領導說,快應用在線加載時,之前因為這個統計js的加載明顯阻塞了業務頁面打開速度,做了這個優化后,打開應用顯著提升不少。

我們再繼續上一個問題,為什么不同步加載?

我把代碼改造一下,去除了一些無關緊要的代碼:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>js執行的順序問題</title>
<script>
window.formateJson = (data) => JSON.stringify(data, null, 2);
</script>
<script async defer src="./js/tj.js"></script>
<script async defer>
(function (win, head, attr, script) {
win[attr] = win[attr] || [];
win[attr].push({
id: "maic",
});
win[attr].push({
id: "Tom",
});
console.log("---2222---");
console.log(formateJson(win[attr]));
})(window, document.getElementsByTagName("head")[0], "actd", "script");
</script>
<script async defer src="./js/app.js"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>

結果

[
{
"id": "maic"
},
{
"id": "Tom"
},
{
"id": "pink"
}
]

嘿,需求是達到了,因為我的業務app.js加的數據是最后一條,說明業務功能上是ok的,但是我們看下分析數據。

首先肯定是加載順序會發生變化,會先加載tj.js然后再加載業務app.js,你會發現同步加載這種方式有個弊端,假設tj.js很大,那么是會阻塞影響頁面首屏打開速度的,所以在之前采用異步,定時器方式,首屏加載會有顯著提升。

同步加載(1846ms)

圖片

圖片

我們發現tj.js與app.js相隔的時間很少,且我們從火焰圖中分析看到,Summary的數據是1846ms。

綜上比較,雖然同步加載依然比不上使用定時器的加載方式,使用定時器相比較同步加載,依然是領先11%左右。

異步標識async/defer

在上面的代碼中,我們多次看到async和defer標識,在之前文章中筆者有寫過一篇你真的了解esModule嗎,闡述一些關于script標簽中type="moudle", defer,async的幾個標識,今天再次回顧下。

其實從腳本優先級來看,同步的永遠優先最高,當一個script標簽沒有指定任何標識時,此時根據js引擎執行來說,誰放前面,誰就會優先執行,前面沒執行完,后面同步的script就不會執行。

注意到沒有,我在腳本上有加async與defer。

在上面栗子中,我們使用insertBefore方式,這就將該插入的js腳本的優先級降低了。

我們從上面火焰圖中可以分析得處結論,排名先后順序依次如下:

1、setTimeout+insertBefore

執行順序:app.js->tj.js

2、同步腳本加載

執行順序:tj.js->app.js

3、不使用定時器+insertBefore

執行順序:app.js->tj.js

當我們知道在1中,app.js優先于tj.js

因為insertBefore就是一種異步動態加載方式

舉個例子:

<script async defer>
// 執行
console.log(1)
// 2 insertBefore 這里再動態添加js
</script>
<script async defer>
// 執行
console.log(3)
</script>

執行關系就是1,3,2。

關于async與defer誰先執行時,defer的優先級比較低,會等異步標識的async下載完后立馬執行,然后再執行defer的腳本,具體可以參考以前寫的一篇文章你真的了解esModule嗎。

總結

  • 統計腳本,我們可以使用定時器+insertBefore方式可以大大提高首屏的加載速度,這也給我們了一些啟發,首屏加載,非業務代碼,比如埋點統計可以使用該方案做一點小優化加快首屏加載速度。
  • 如果使用insertBefore方式,非常不建議同步方式insertBefore,這種方式還不如同步加載統計腳本。
  • 在特殊場景下,我們需要加載統計腳本,有基礎信息的依賴后,我們也需要在業務代碼使用統計,我們不要在動態加載腳本的同時使用onload,在onload中嘗試添加基礎信息,實際上這種方式并不能滿足你的需求。
  • 一些關于async與defer的特性,記住,執行順序,同步任務會優先執行,async是異步,腳本下載完就執行,defer優先級比較低。
  • 本文示例code example[1]

[1]code example: https://github.com/maicFir/lessonNote/tree/master/javascript/21-js異步執行

責任編輯:武曉燕 來源: Web技術學苑
相關推薦

2023-12-17 14:49:20

前端首屏時間

2025-03-10 00:00:50

2021-07-01 12:10:31

性能優化React

2022-05-14 08:35:12

Webpack前端

2009-09-04 11:34:31

NetBeans優化

2023-11-25 20:16:22

前端

2021-01-08 09:40:40

優化VUE性能

2013-05-22 09:20:42

Chrome 27瀏覽器

2012-06-08 09:41:18

Web

2024-11-01 07:30:00

2017-12-05 13:41:02

SQL數據庫SQL查詢

2024-04-17 08:23:50

WebView技巧優化

2017-12-28 14:54:04

Android代碼埋點全埋點

2017-08-16 10:57:25

H5HTML開發

2010-12-24 08:57:44

Google加速工具page-speed

2016-09-30 13:11:31

前端后端網頁速度

2024-11-28 10:04:14

2024-02-23 08:18:32

首屏產品瀏覽器

2015-10-29 09:40:54

優化頁面加載速度

2023-12-13 18:46:50

FlutterAOP業務層
點贊
收藏

51CTO技術棧公眾號

五月天色婷婷综合| 日韩免费观看网站| 欧美日韩一区二区三区四区五区六区| 国产99re66在线视频| 成人av资源站| 欧美中文字幕视频| 成人无码av片在线观看| 日本免费成人| 一区二区三区四区精品在线视频 | 91欧美国产| 欧美一区二区在线免费观看| 精品国产一区久久久| 欧美成人三级在线播放| 污视频免费在线观看| 成人精品国产福利| 国产精品1234| 成人性生活毛片| 欧美色图五月天| 欧美午夜电影网| 久久免费一级片| 午夜视频免费看| 久久精品国产99国产精品| 欧美成人性色生活仑片| 天天插天天射天天干| 精品美女一区| 亚洲成人免费视频| 国产在线播放不卡| 欧美福利视频一区二区| 菠萝蜜一区二区| 欧美sm极限捆绑bd| 亚洲成人av免费看| www成人免费观看| 国产精品色哟哟| 精品欧美一区二区精品久久| 国产精品人妻一区二区三区| av不卡在线看| 日韩在线观看高清| 97人妻精品一区二区免费| 激情综合婷婷| 欧美日韩午夜精品| 黄www在线观看| 黄色免费网站在线观看| 久久久亚洲综合| 99re在线国产| 一级爱爱免费视频| 亚洲在线电影| 欧美贵妇videos办公室| 色噜噜噜噜噜噜| 欧美黑白配在线| 日韩美女视频在线| 制服丝袜中文字幕第一页| 在线观看爽视频| 亚洲综合视频在线观看| 制服诱惑一区| 在线免费观看黄色网址| 久久久久成人黄色影片| 韩日午夜在线资源一区二区| 国产视频在线观看视频| 秋霞成人午夜伦在线观看| 欧美一区二区三区……| 国产在线观看免费视频今夜| 亚洲欧美网站在线观看| 日韩中文字幕欧美| 1024在线看片| 日韩精品看片| 在线观看视频99| 久久精品国产亚洲av久| 欧美激情久久久久久久久久久| 精品国产亚洲一区二区三区在线观看| 黄页网站在线看| 欧洲精品99毛片免费高清观看 | 国产亚洲欧美在线精品| 国产日韩综合| 欧洲精品在线视频| 亚洲午夜18毛片在线看| 乱码第一页成人| 欧美一级黄色网| 日韩在线播放中文字幕| 首页国产欧美久久| 国产精品露脸av在线| 在线观看黄色网| 精品一区二区三区在线观看 | 不卡av在线网| 久久99热只有频精品91密拍| 亚洲区小说区图片区| 99久久精品国产精品久久| 久久精品日韩| 国产中文在线视频| 国产精品卡一卡二| 中文字幕日韩精品久久| 成人福利在线观看视频| 一区二区激情视频| 成人中文字幕在线播放| 国产精品扒开腿做爽爽爽视频软件| 在线影院国内精品| 亚洲精品乱码久久久久久自慰| 91破解版在线观看| 欧美色视频日本版| 成 年 人 黄 色 大 片大 全| 青春草在线视频| 偷窥少妇高潮呻吟av久久免费| 成人在线免费观看av| 欧美日韩亚洲国产| 欧美在线不卡一区| 亚洲综合av在线播放| 久久中文字幕一区二区| 亚洲国产精品成人精品| 国产极品一区二区| 啪啪国产精品| 精品视频偷偷看在线观看| 五月激情四射婷婷| 欧美日韩p片| 欧美洲成人男女午夜视频| 中文字幕av免费观看| 国产精品99久| 欧洲成人一区二区| 日韩123区| 色婷婷久久一区二区三区麻豆| 亚洲一区二区福利视频| 久久电影在线| www.国产精品一二区| 国产午夜精品一区二区理论影院 | 欧美日韩精品电影| 欧美特黄aaa| 久久夜色电影| 久久精品亚洲国产| 男人的天堂av网站| 国产成人免费av在线| 日本午夜一区二区三区| 日本中文字幕中出在线| 欧洲一区二区av| 国产精品一区二区人妻喷水| 欧美独立站高清久久| 136fldh精品导航福利| 国产日韩免费视频| 国产视频911| 免费av手机在线观看| 香蕉久久一区| 亚洲欧美一区二区激情| 动漫精品一区一码二码三码四码| 久久国产剧场电影| 欧美连裤袜在线视频| 牛牛精品在线视频| 欧美日本高清视频在线观看| 波多野结衣a v在线| 在线看片欧美| 亚洲最大激情中文字幕| 天堂а√在线资源在线| 色综合天天狠狠| 国产原创剧情av| 欧美精品午夜| 91日韩在线视频| 大片免费播放在线视频| 欧美视频在线免费看| a天堂视频在线观看| 午夜日韩福利| 91在线观看免费| 色网站在线看| 欧美一级欧美三级在线观看| 欧美成人精品欧美一| 国产sm精品调教视频网站| 四虎一区二区| 电影一区电影二区| 在线国产精品播放| 日韩黄色一级视频| 国产日韩欧美不卡| 天天干天天综合| 日韩精品午夜| 91精品久久久久久久久久入口| 成年人在线免费观看| 欧美性猛交xxxx乱大交退制版| 毛茸茸多毛bbb毛多视频| 亚洲国产1区| 成人av资源| 日韩伦理av| 日韩精品最新网址| 91视频青青草| 国产一区91精品张津瑜| 菠萝蜜视频在线观看入口| 88久久精品| 91精品国产自产91精品| 伦理片一区二区三区| 在线视频一区二区三| 精品人妻中文无码av在线| 老司机午夜精品| 成人在线观看www| 亚洲日本va| 午夜精品久久久久久久久久久久| 婷婷五月综合激情| 狠狠色狠狠色综合日日五| 在线免费观看成年人视频| 免费久久99精品国产自在现线| 日本一区视频在线播放| 欧美系列精品| 欧美寡妇偷汉性猛交| 欧美色视频免费| 欧美日韩一区高清| 国产波霸爆乳一区二区| 久久久久国产精品厨房| 污视频在线观看免费网站| 在线不卡亚洲| 欧洲精品在线一区| 婷婷精品久久久久久久久久不卡| 色综合久综合久久综合久鬼88| 丰满大乳国产精品| 色综合久久88色综合天天免费| 青青青手机在线视频| 成人蜜臀av电影| 成人黄色一区二区| 亚洲成人短视频| 日韩中文字幕第一页| 亚洲国产精品18久久久久久| 日韩欧美国产网站| 最新av电影网站| 99热这里都是精品| а 天堂 在线| 欧美一级一区| 高清无码视频直接看| 国产精品一区二区av日韩在线| 成人xvideos免费视频| 极品av在线| 欧美激情第一页xxx| 午夜在线小视频| 日韩大片免费观看视频播放| 91精品视频免费在线观看| 欧美日韩性生活视频| 永久免费看片直接| 2020国产精品| 日本美女视频网站| 麻豆久久久久久| 日韩欧美xxxx| 好看的亚洲午夜视频在线| 亚洲福利av| 色先锋久久影院av| 成人欧美在线视频| 国产69精品久久| 91国内在线视频| av网站大全在线| 中文字幕一区电影| 三级在线播放| 亚洲国产精品久久久久秋霞蜜臀| 国产精品国产一区二区三区四区| 色老汉一区二区三区| 日韩av综合在线| 亚洲国产一二三| 精品无码黑人又粗又大又长| 亚洲欧洲另类国产综合| 日本综合在线观看| 久久先锋影音av| 91玉足脚交白嫩脚丫| 国产.精品.日韩.另类.中文.在线.播放 | 高清一区二区三区四区五区| 日本精品一区二区三区在线播放| 亚洲久久久久久久久久| 国产99对白在线播放| 欧美日韩精品一区视频| 亚洲av人无码激艳猛片服务器| 欧美日韩免费在线观看| 国产精品7777777| 亚洲第一福利一区| 久久在线视频精品| 亚洲宅男天堂在线观看无病毒| 精品一区在线观看视频| 亚洲三级小视频| 91香蕉视频在线播放| 国产精品欧美一区喷水| 欧美 日韩 国产 成人 在线观看| 久久久久久久久久久99999| 人妻丰满熟妇aⅴ无码| 337p粉嫩大胆噜噜噜噜噜91av| 精品国产av色一区二区深夜久久| 成人午夜私人影院| 亚洲婷婷在线观看| 成人黄色国产精品网站大全在线免费观看| 中文字幕第22页| 国产成人午夜视频| 精品国产av色一区二区深夜久久| 91在线视频免费观看| 乐播av一区二区三区| 国产欧美日韩三级| 亚洲少妇xxx| 一区二区在线观看不卡| 国产系列精品av| 欧美日韩亚洲天堂| 亚洲欧美一二三区| 欧美丰满少妇xxxbbb| 国产一区二区小视频| 91精品国产综合久久久久久漫画| 国产精品视频a| 亚洲福利精品在线| 美女欧美视频在线观看免费| 在线视频免费一区二区| 成人福利在线观看视频| 欧美激情精品久久久久久| av午夜在线观看| 国产成人在线播放| 99tv成人影院| 国产亚洲一区二区三区在线播放| 美女网站一区| 亚洲午夜久久久影院伊人| 欧美激情1区| 六月丁香婷婷激情| 久久一区亚洲| 日韩 国产 一区| 91在线观看一区二区| 美国精品一区二区| 亚洲综合丁香婷婷六月香| 国产91精品一区| 91精品国产麻豆| 亚洲欧美日本在线观看| 久久亚洲精品一区二区| 欧美亚洲日本精品| 91网站免费观看| 亚洲黄色录像| 老司机午夜网站| 久久一本综合频道| 成人三级做爰av| 国产亚洲精品中文字幕| 加勒比av在线播放| 黑人极品videos精品欧美裸| www.毛片.com| 精品久久久久久久久久久久久久久| 男人的天堂在线| 欧美激情中文字幕乱码免费| 蜜桃视频成人m3u8| 国产精品一区免费观看| 国产精品久久久久无码av| 欧美性大战久久久久xxx| 久久成人综合网| 美女爆乳18禁www久久久久久| 一区二区三区不卡视频在线观看| 一级片视频在线观看| 精品日韩一区二区三区| 国产在线看片| 国产精品男人的天堂| 少妇高潮一区二区三区| 欧美国产视频一区| 激情久久久久久久久久久久久久久久| 丝袜美腿中文字幕| 亚洲图片欧美视频| 精品人妻伦一区二区三区久久| 亚洲激情视频在线观看| 手机电影在线观看| 成人网欧美在线视频| 青青草原综合久久大伊人精品 | 亚洲欧洲日本mm| 日韩久久久久久久久久久| 国产女人18毛片水真多成人如厕| 日韩免费视频一区二区视频在线观看| 欧美va亚洲va| 污污视频在线看| 91在线视频精品| 99久久影视| 天天干天天玩天天操| 99久精品国产| www亚洲视频| 亚洲精品www久久久久久广东| av蜜臀在线| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 欧美日韩一区二区三区四区在线观看| 国产麻花豆剧传媒精品mv在线| 不卡的看片网站| 国产成人亚洲欧洲在线| 欧美精品一区男女天堂| free性护士videos欧美| 国产在线观看一区| 亚洲综合社区| 国产真实乱人偷精品人妻| 色先锋aa成人| 二区三区在线| 国产乱人伦真实精品视频| 亚洲精品电影| 中文字幕乱码在线人视频| 一区二区三区成人| 午夜视频在线免费播放| 国产成人极品视频| 日韩久久精品| 日本高清一区二区视频| 亚洲人成在线观看一区二区| 91av久久久| 欧美激情乱人伦一区| 亚洲国产aⅴ精品一区二区| 国产黄色激情视频| 91视频一区二区三区| 欧美亚洲另类小说| 日韩中文字幕在线播放| 国产一区精品二区| 免费观看国产视频在线| 国产999精品久久久久久绿帽| 自拍偷拍欧美亚洲| 中文在线不卡视频| eeuss国产一区二区三区四区| 欧美三级在线观看视频| 国产视频一区不卡| 国产视频在线免费观看| 26uuu亚洲国产精品| 日韩理论电影| 亚洲中文字幕无码一区| 色婷婷香蕉在线一区二区| 成人午夜在线影视|