精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

少妇大叫太大太粗太爽了a片小说| 欧美与欧洲交xxxx免费观看| 波多野结衣三级视频| 草草在线视频| 久久久久88色偷偷免费| 国产日韩中文在线| 日本熟伦人妇xxxx| 成人激情电影在线| 精品国产一区二区三区久久久蜜月| 日韩av在线第一页| 国产在线二区| 久久亚洲一级片| 亚洲xxxx视频| 中文字幕在线天堂| 影音先锋一区| 精品国产一区二区三区久久| 可以直接看的无码av| 日本一区二区乱| 91官网在线免费观看| 免费观看亚洲视频| av网在线观看| 2024国产精品| 超碰在线观看97| 国产尤物视频在线观看| 久久成人国产| 久久久久久国产免费| 国产精品99久久久久久成人| 久久99国内| 亚洲成色777777女色窝| 在线视频一二区| 素人一区二区三区| 日韩人在线观看| 奇米影视亚洲色图| 日本片在线看| 亚洲欧美激情在线| 亚洲视频欧美在线| 成人77777| 国产三级精品在线| 日本一区二区在线视频观看| 亚洲三区在线播放| 成人免费视频国产在线观看| 97超碰人人看人人| 国产精品国产三级国产普通话对白| 日韩国产欧美一区二区三区| 国产69精品久久久久久| 青青操免费在线视频| 韩国欧美一区| 午夜精品一区二区三区在线视频| 久草中文在线视频| 欧美先锋影音| 欧美精品第一页在线播放| 麻豆一区产品精品蜜桃的特点| 亚洲澳门在线| 超碰精品一区二区三区乱码| 女性裸体视频网站| 999国产精品永久免费视频app| 中文字幕日韩欧美在线| 久久精品色妇熟妇丰满人妻| 日韩大片在线| 俺也去精品视频在线观看| 日韩欧美国产成人精品免费| 香蕉国产精品| 欧美黄色性视频| 国产真人真事毛片| 亚洲欧美大片| 国产精品嫩草影院一区二区| 在线视频播放大全| 激情综合色丁香一区二区| 91午夜在线播放| 亚洲精品喷潮一区二区三区| 白白色 亚洲乱淫| 农村寡妇一区二区三区| 国产黄色片在线播放| 欧美国产97人人爽人人喊| 一本一生久久a久久精品综合蜜| 黄在线免费观看| 亚洲愉拍自拍另类高清精品| 噜噜噜久久亚洲精品国产品麻豆| 网友自拍亚洲| 91精品国产免费| 日韩免费高清一区二区| 欧美日中文字幕| 美女少妇精品视频| 国产又大又黄视频| 美女www一区二区| 爱情岛论坛亚洲入口| 深夜福利视频一区| 中文字幕日韩欧美一区二区三区| 一二三四中文字幕| 在线观看欧美日韩电影| 欧美日韩一区在线观看| 人妻av一区二区三区| 视频一区欧美| 久久999免费视频| 成人免费毛片男人用品| 国产又粗又猛又爽又黄91精品| 国产欧美日本在线| 日本欧美在线视频免费观看| 亚洲国产日韩av| 污污动漫在线观看| 久久黄色影视| www.亚洲一区| 国产九色在线播放九色| 久久精品国产精品亚洲精品 | 1024av视频| 国产情侣一区在线| 亚洲少妇中文在线| 精品少妇久久久| 久久99在线观看| 久久这里精品国产99丫e6| 国产素人视频在线观看| 日韩欧美极品在线观看| 无码人妻丰满熟妇区毛片蜜桃精品| 免费看成人哺乳视频网站| 久久91精品国产| 中文字幕+乱码+中文乱码www| 成人18精品视频| 韩国黄色一级大片| 久久av日韩| 国产亚洲人成a一在线v站| 久久精品美女视频| 国产精品一区二区在线看| 亚州欧美一区三区三区在线| 国产中文在线播放| 欧美变态tickle挠乳网站| 免费黄色国产视频| 日本中文在线一区| 欧美日韩国产精品一区二区| 678在线观看视频| 日韩免费一区二区三区在线播放| 美国精品一区二区| 日本欧美久久久久免费播放网| 久久99影院| 欧美男人天堂| 精品爽片免费看久久| 日韩黄色a级片| 高潮精品一区videoshd| 精品视频在线观看一区二区| 国产色99精品9i| 久久高清视频免费| 国产美女三级无套内谢| 综合婷婷亚洲小说| 中文字幕色网站| 亚洲h色精品| 91免费看网站| 黄色在线观看视频网站| 精品国产免费视频| 日本熟妇毛茸茸丰满| av中文字幕不卡| 久久成人免费观看| 亚洲人成网77777色在线播放| 91a在线视频| 青青九九免费视频在线| 91搞黄在线观看| 国产日产在线观看| 狠狠久久亚洲欧美| 日本美女爱爱视频| 91精品国产乱码久久久竹菊| 欧美极品少妇xxxxⅹ喷水 | 亚洲免费精彩视频| 秋霞精品一区二区三区| 日本一区二区综合亚洲| 在线观看日本一区二区| 中文字幕一区二区三三| 国产成人精品福利一区二区三区| free性m.freesex欧美| 日韩高清免费在线| 国产在线一级片| 亚洲三级在线免费观看| 精品国产乱码久久久久夜深人妻| 亚洲精品乱码| 日韩久久不卡| 国产一区二区在线观| 国内免费久久久久久久久久久 | 少妇精69xxtheporn| 国产一区二区三区四区视频| 亚洲一区精品在线| 国产精久久一区二区三区| 免费亚洲电影在线| 大荫蒂性生交片| 国产一区二区三区探花 | 日韩欧美黄色| 91精品国产综合久久男男 | 一区二区三区午夜视频| aa亚洲婷婷| 欧美精品videossex88| 日本人妖在线| 91麻豆精品久久久久蜜臀| 亚洲国产综合久久| 中文幕一区二区三区久久蜜桃| 亚洲av无码久久精品色欲| 免费视频久久| 4444在线观看| 精品久久精品| 国产精品久久一区二区三区| 亚洲国产尤物| 国模私拍一区二区三区| 三区四区在线视频| 国产视频亚洲精品| 亚洲av永久无码国产精品久久 | 国产wwwxx| 亚洲裸体俱乐部裸体舞表演av| 亚洲综合首页| 久久99精品久久久久久园产越南| 99九九视频| 乱馆动漫1~6集在线观看| 久久精品国产一区二区三区| 久久久pmvav| 亚洲成人三级在线| 国产理论视频在线观看| 日本高清无吗v一区| 国产一级在线视频| 亚洲人成网站影音先锋播放| 精品无码国产污污污免费网站| 高清av一区二区| 亚洲一级片免费观看| 日本伊人色综合网| 成人在线免费在线观看| 国产精品九九| 日韩中文在线字幕| 久久日文中文字幕乱码| 欧洲久久久久久| 欧美一区二区三区红桃小说| 国产精品久久久久免费| 一区二区三区四区高清视频| 成人在线免费观看视视频| 精品国模一区二区三区| 欧美在线激情视频| 成人黄色动漫| 久久久久久免费精品| 欧美xxx黑人xxx水蜜桃| 美女撒尿一区二区三区| 国产黄网站在线观看| 色偷偷亚洲男人天堂| wwwww在线观看免费视频| 亚洲免费一在线| 日本一二三区在线视频| 日韩精品视频三区| 日韩欧美亚洲系列| 亚洲精品国产精品久久清纯直播| 二区三区在线视频| 精品国产一区二区亚洲人成毛片| www.天堂av.com| 欧美不卡视频一区| 欧美特黄一级视频| 欧美精品一区二区三区高清aⅴ| 超碰在线观看99| 亚洲成**性毛茸茸| 天堂中文在线官网| 日韩精品中文字幕久久臀| 日中文字幕在线| 国产一区二区黄| 色哟哟免费在线观看| 精品国内自产拍在线观看| 国产盗摄在线观看| 久久69精品久久久久久国产越南| 国产www视频在线观看| 久久久亚洲精品视频| 九色porny自拍视频在线观看| 69av视频在线播放| 欧美精品资源| 国产精品自拍小视频| 福利精品在线| 亚洲伊人久久综合| 久久丝袜视频| 日本不卡免费新一二三区| 日韩在线综合| 青青青在线观看视频| 国产欧美另类| 欧美一级特黄a| 国产一区二区伦理片| 国产人成视频在线观看| 久久久综合九色合综国产精品| 免费网站在线高清观看| 亚洲三级电影全部在线观看高清| 精品少妇theporn| 色成人在线视频| 99精品国产99久久久久久97| 亚洲成人网av| 天堂а√在线官网| 久久久久久噜噜噜久久久精品| 欧美一级大黄| 亚洲综合最新在线| 日本一区福利在线| 一区二区不卡在线视频 午夜欧美不卡'| 伊人久久大香线蕉精品组织观看| 免费超爽大片黄| 美女视频黄免费的久久 | 欧美美乳视频| 97超碰人人爱| 一区二区动漫| 午夜天堂在线视频| 91免费国产在线| 男人的午夜天堂| 精品久久久精品| 国产免费黄色片| 亚洲人成免费电影| 黄色羞羞视频在线观看| 国产精品第3页| 亚洲专区**| 亚洲欧美日韩精品在线| 亚洲日韩视频| 深夜视频在线观看| 成人免费视频在线观看| 手机在线看片1024| 亚洲成成品网站| 羞羞的视频在线观看| 国产精品va在线播放| 国产96在线亚洲| 18视频在线观看娇喘| 热久久国产精品| 久久久久久久久久久国产精品| 一区2区3区在线看| 91禁在线观看| 亚洲日本中文字幕免费在线不卡| 女囚岛在线观看| 91九色综合久久| 日韩一区电影| 中文字幕国产传媒| 久久久久久久国产精品影院| 香蕉视频一区二区| 日韩精品一区二区三区三区免费 | 亚洲欧美tv| 日韩伦理在线免费观看| 国产精品系列在线播放| 99精品中文字幕| 欧美视频一区二区在线观看| 蜜桃成人在线视频| 26uuu国产精品视频| 精品亚洲自拍| 青青青在线视频播放| 国产a精品视频| 五月天激情丁香| 在线电影院国产精品| 三区四区电影在线观看| 国产精品热视频| 日本一区二区在线看| 熟妇人妻va精品中文字幕| 久久久久久久久99精品| 黄色av一级片| 国产午夜精品一区二区三区| 九九热线视频只有这里最精品| 蜜桃视频在线观看91| 香蕉精品999视频一区二区| 精品无码在线视频| 狠狠久久亚洲欧美专区| 欧美欧美欧美| 国产精品久久久久久久久久小说 | 欧美激情欧美激情| 高清精品视频| 国产特级淫片高清视频| 99精品欧美一区| 99久久久久久久久| 在线视频欧美日韩| 日韩成人在线一区| 99久re热视频精品98| 丁香网亚洲国际| 国产精品久久久久久99| 亚洲深夜福利网站| 色综合视频一区二区三区44| 国产日韩视频在线播放| 国产a久久麻豆| 成人公开免费视频| 中文字幕在线观看亚洲| 中文字幕日本一区| 国产xxxx振车| 久久嫩草精品久久久精品一| 国产91av在线播放| 久久综合九色九九 | 亚洲国产成人不卡| 国产一区二区三区久久久| 久久久无码一区二区三区| 精品视频久久久久久久| 男人亚洲天堂| 加勒比成人在线| 欧美高清在线视频| 成人激情四射网| 国产成人精品a视频一区www| 91精品电影| 亚洲一区二区乱码| 欧美美女激情18p| 91高清视频在线观看| 亚洲一区二区三区欧美| 成人午夜av电影| 中文字幕 欧美激情| 久久久久久久久91| 日韩成人影院| 亚洲蜜桃精久久久久久久久久久久| 欧美三区免费完整视频在线观看| 日韩电影免费观看| 日韩一二三区不卡在线视频| 国产成人在线观看| 国产一卡二卡三卡| 久久91精品国产| 久久精品不卡| 亚洲观看黄色网| 日韩视频在线你懂得| 成人自拍视频网| 拔插拔插海外华人免费| 中文字幕一区二区在线播放|